这是我的代码:
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个空格
答案 0 :(得分: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(',')))
答案 1 :(得分: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))