如何检测`\ t`的长度并对其进行格式化?

时间:2016-02-23 02:11:22

标签: python file printing io format

我有一个文件

52779  0 0 0 1 0 0 0 0 1  52779.jpg
278973  0 0 0 1 0 0 0 0 1  278973.jpg
195284  0 0 0 1 0 0 0 0 1  195284.jpg
19992  0 0 0 1 0 0 0 0 1  19992.jpg

该文件由Python在Python中创建(见下文)。我希望每个空格的长度为1 \t。但是,测试显示某些行没有问题,而其他行则没有。

如何检测\t的长度并将每个空格格式化为\t

原始文件

204149 "0 0 0 1 0 0 0 0 1" 204149.jpg
52779 "0 0 0 1 0 0 0 0 1" 52779.jpg
278973 "0 0 0 1 0 0 0 0 1" 278973.jpg
195284 "0 0 0 1 0 0 0 0 1" 195284.jpg

我对原始文件做了什么

fi = open('image.lst')
fi.readline()
fo = open('image2.lst', "w")
for line in fi:
    line = line.replace('"', ' ')   
    fo.write("%s" % line)
fi.close()
fo.close()

1 个答案:

答案 0 :(得分:1)

我不确定“检测'\t'的长度”是什么意思。 len('\t') == 1,如果这就是你的意思......但是在这一行

line = line.replace('"', ' ')

您要用一个空格替换双引号,因此最终会使用空格而不是'\t'

试试这个:

with open('image.lst') as fi, open('image2.lst', 'w') as fo:
    for line in fi:
        line = line.replace(' ', '\t').replace('"', '')
        fo.write(line)

输出行

204149\t0\t0\t0\t1\t0\t0\t0\t0\t1\t204149.jpg