修改的
我的文本输出格式为:
SANFRAN
温度1 72
Hum 2 70
时间3点12分
SANFRAN
温度1 74
Hum 2 68
时间3 12:01
SANFRAN
温度1 76
嗡嗡声2 65
时间3 12:02
... fyi输出是City(例如SANFRAN)或" "
我想把它写成csv,像这样:
SANFRAN,72,70,12:12
SANFRAN,74,68,12:01
SANFRAN,76,65,12:02
(这是原始问题的简化版)
如何读取每一行,然后按FID ...然后写入每次出现的SANFRAN ...其中,编写者将根据上面所需的输出按顺序放置每个FID
当我在行中读到它时,它是一个字符串,但我似乎无法将其拆分("")[然后我尝试将文件读入csv,所以我得到了一个列表而不是每行,但这不能是pythonically的方式] ...然后我可以做一个if / switch样式语句来挑选出这个行的FID是什么 =>但这一切似乎都像狗吃晚饭了!
我希望我能指定一个模式,因为(所有新行)中的文本确实遵循模式(尽管在我试图解析的真实文本中,有时FID不存在于每个记录中 - 在这种情况下我会去要么重复上次看到的值,要么留空......或两者的组合!)
答案 0 :(得分:0)
这不是最漂亮的解决方案,但我只是测试了它:
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