python中的文本到csv

python中的文本到csv,python,Python,编辑 我有如下形式的文本输出: 桑弗兰 温度172 嗡嗡声270 时间3:12:00 桑弗兰 温度174 哼2 68 时间3:12:01 桑弗兰 温度1 76 哼2 65 时间3:12:02 。。。仅供参考,输出为城市(如桑弗兰)或“” 我想把这个写进csv,像这样: 桑弗兰,72,70,12:00 桑弗兰,74,68,12:01 桑弗兰,76,65,12:02 (这是原问题的简化版本) 我怎样才能阅读每一行,然后通过FID。。。然后写下每一次SANFRAN事件。。。其中,writerow将按照

编辑

我有如下形式的文本输出:

桑弗兰
温度172
嗡嗡声270
时间3:12:00
桑弗兰
温度174
哼2 68
时间3:12:01
桑弗兰
温度1 76
哼2 65
时间3:12:02

。。。仅供参考,输出为城市(如桑弗兰)或“”

我想把这个写进csv,像这样:

桑弗兰,72,70,12:00
桑弗兰,74,68,12:01
桑弗兰,76,65,12:02

(这是原问题的简化版本)

我怎样才能阅读每一行,然后通过FID。。。然后写下每一次SANFRAN事件。。。其中,writerow将按照上述所需输出顺序放置每个FID

当我读取行中的内容时,它是一个字符串,但我似乎无法使用拆分(“”)将其拆分[然后我尝试将该文件读入csv,因此我得到了每行的列表,但这不是pythonically方法]。。。然后我可以做一个if/switch样式的语句来选择这一行是什么FID =>但这一切又像是狗的晚餐了


我希望我能指定一个模式,因为(所有新行)中的文本都遵循一个模式(尽管在我试图解析的实际文本中,有时FID不存在于每个记录中-在这种情况下,我将重复上次看到的值,或者保留一个空值..或两者的组合!)

这不是最漂亮的解决方案,但我只是测试了一下:

import csv

string = """SANFRAN
Temp 1 72
Hum 2 70
Time 3 12:00
SANFRAN
Temp 1 74
Hum 2 68
Time 3 12:01
SANFRAN
Temp 1 76
Hum 2 65
Time 3 12:02"""

strList = string.split('\n')

#creates result.csv file to write results to
f = csv.writer(open("result.csv", "wb+"))
#writes header row
f.writerow(["City", "Temp", "Hum", "Time"])

count = 1
tempList = []
for x in strList:
    temp = x.split(' ')

    if(count == 1):
        tempList.append(temp[0])
    else:
        tempList.append(temp[2])

    #Completed csv row
    if(count%4==0):
        f.writerow([tempList[0],tempList[1],tempList[2], tempList[3]])
        tempList = []
        count = 0
    count = count + 1

谷歌告诉你什么?有很多可能的解决方案,你能提供你已经尝试过的吗?即使您所拥有的根本不起作用,它也将帮助我们理解您正在挣扎的特定代码/概念。一个真实的数据样本也会有帮助。一些代码和预期的输出将是一个很大的帮助。。。对不起,第一篇文章太糟糕了!谢谢你,伙计。。。不过,我希望有更聪明的东西,可以识别(字段+FID+值)的模式。也许这是不可能的-啊哈,更具活力的东西?你能把你的问题再详细一点吗?您是说每行可能有多个值吗?它不总是只有三个(字段ID值)?嘿,扎尔。。。从长远来看,我想拉一组可配置的字段。。。一组字段写入一个csv文件,另一组已定义字段写入另一个csv文件,所有剩余字段转储到第三个文件[不确定哪种格式将是/将是最好的…我只想检查每个记录的第三组字段是否与field+fid+value匹配]在运行之前,您是否知道这些字段?它们可以硬编码到一个列表中,然后进行检查,还是必须是动态的?在运行之前,我将知道前两组字段。。。第三个文件只是其他字段的总括,所以我不知道它们