我创建了一个程序,它读取文本文件的所有行,然后找到该行的一部分,其中特定的字符串以Kbits结尾。对于发生这种情况的所有行,我采用Kbits之前的部分(这是一个int)并将其放入一个列表中,我稍后将其写入csv文件。问题是,当我写入csv文件时,Int被拆分,并且每个数字都被分配给csv文件中的新列。我有一个想法与我的类型方式有关,但我无法弄明白。 我使用的是Python 2.7。
txt文件中的一行是这样的:
[2018-01-24 14:57:05,766] [ 5] 2.00-3.00 sec 872 KBytes 7140 Kbits/sec 2.714 ms 693/1326 (52%)
对于此特定行,我希望在.csv文件中有7140
我的代码如下:
lst = []
myfile = file('file.csv', 'wb')
txtfile = open('file.txt')
for line in txtfile:
line = str(re.findall('\d*\ Kbits', line))
if(line == "[]"):
r = 1
else:
new = line.replace(" Kbits", "")
lst.append(new)
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
for i in range(0, len(lst)):
wr.writerow(lst[i])
txtfile.close()
答案 0 :(得分:0)
尝试以下方法:
import re
import csv
with open('file.txt', 'rb') as f_input, open('file.csv', 'wb') as f_output:
csv_output = csv.writer(f_output, quoting=csv.QUOTE_ALL)
for row in f_input:
kbits = re.findall('(\d+)\ Kbits', row)
if kbits:
csv_output.writerow(kbits)
对于您的示例行file.csv
,如下所示:
"7140"