将txt-file的部分写入csv时,为每个单独的字符分配一个新列

时间:2018-02-02 09:45:54

标签: python regex csv

我创建了一个程序,它读取文本文件的所有行,然后找到该行的一部分,其中特定的字符串以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()

1 个答案:

答案 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"