Python 将txt文件的一部分写入csv时,每一行的每一个字符都会被分配一个新列
我制作了一个程序,它读取文本文件的所有行,然后找到行的一部分,其中一个特定字符串以Kbits结尾。对于发生这种情况的所有行,我将在Kbits(一个int)前面的部分放入一个列表,然后将其写入csv文件。问题是,当我写入csv文件时,Int被拆分,每个数字都被分配给csv文件中的一个新列。我有一个想法,这和我打字的方式有关,但我搞不清楚。 我正在使用Python 2.7 txt文件中的一行如下所示:Python 将txt文件的一部分写入csv时,每一行的每一个字符都会被分配一个新列,python,regex,csv,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
[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()
请尝试以下操作:
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”
能否提供一些输入字符串,以及在.csv
文件中需要什么?只需编辑问题。我也可以得到输出,问题发生在我只需要数字部分的时候。因此,与“7140 Kbits”不同,我只想要“7140”,还要注意的是,完整的.txt文件中的一些行不包含带有“Kbits”的行。您只需要使用(\d+)
,我已经更新了脚本。谢谢,这很有效。我想我可能一开始就把它复杂化了。