我有一个日志文件,其行如下所示:
"1","2546857-23541","f_last","user","4:19 P.M.","11/02/2009","START","27","27","3","c2546857-23541",""
日志中的每一行作为12个双引号部分,字符串中的第7个双引号部分来自用户在聊天窗口中输入内容的位置:
"22","2546857-23541","f_last","john","4:38 P.M.","11/02/2009","
What's up","245","47","1","c2546857-23541",""
这个字符串也显示了我遇到的问题;聊天日志中有一些区域,用户键入的文本位于日志文件中的新行上,而不是像第一个示例中的相同行。 所以基本上我希望第二个例子中的行看起来像第一个例子。
我尝试在N ++中使用查找/替换,我能够找到每个“孤立”行,但我无法让它加入它上面的行。 然后我想到制作一个python文件来为我自动化它,但我对如何实际编码它感到困惑。
Python运行unutbu代码的错误
"1760","4746880-00129","bwhiteside","tom","11:47 A.M.","12/10/2009","I do not see ^"refresh your knowledge
^" on the screen","422","0","0","c4746871-00128",""
答案 0 :(得分:3)
csv module非常聪明,能够识别引用的项目何时未完成(因此必须包含换行符)。
import csv
with open('data.log',"r") as fin:
with open('data2.log','w') as fout:
reader=csv.reader(fin,delimiter=',', quotechar='"', escapechar='^')
writer=csv.writer(fout, delimiter=',',
doublequote=False, quoting=csv.QUOTE_ALL)
for row in reader:
row[6]=row[6].replace('\n',' ')
writer.writerow(row)
答案 1 :(得分:0)
如果数据是有效的CSV,则可以使用Python的csv.reader类。它应该可以很好地处理您的示例数据。它可能无法正常工作,具体取决于源系统中嵌入双引号的内容。请参阅:http://docs.python.org/library/csv.html#module-contents。
答案 2 :(得分:0)
除非我误解了这个问题。您只需读入文件并删除双引号字符之间出现的任何换行符。