0

这是我的代码:

import fileinput


input_file = 'in.txt'
output = open('out.txt', 'w+')


for each_line in fileinput.input(input_file):
    output.write(x.strip() for x in each_line.split(','))

我得到“期望字符缓冲区”作为错误。我不确定解决此问题的最佳方法是什么?我正在尝试删除所有制表符和空格并用逗号替换它们。

编辑:例如我的数据看起来像:

1   2335    mike

1   4089    doug

我想把它变成

1,2335,mike noll

1,4089,doug funny

编辑,我只想删除前 2 列中的前 2 个空格

4

2 回答 2

1

x.strip() for x in each_line.split(',')确实返回一个生成器对象(而不是预期的字符串缓冲区output.write

你可以做:

with open('out.txt', 'w+') as output:
    for each_line in fileinput.input(input_file):
        output.write("\n".join(x.strip() for x in each_line.split(',')))
于 2013-06-28T20:16:58.683 回答
0

用于str.join将列表加入字符串,然后将其写入文件。

在您的代码中,您实际上是将 genexp 传递给file.write.

for each_line in fileinput.input(input_file):
    output.write(" ".join(x.strip() for x in each_line.split(',')) +'\n')

更新:

with open('out.txt', 'w') as f:
    for line in fileinput.input('input.txt'):
        line = line.split(None,2)
        f.write(','.join(line))
于 2013-06-28T20:17:27.693 回答