我试图强制一个文件在python中被制表,我想同时读取和写入文件,也许这是不可能的,因为指针在试图写入时已经移动了。
考虑file.txt
chr1 557044 557064 FUS 1000 +
chr1 870106 870128 FUS 1000 +
chr1 936672 936706 FUS 1000 +
chr1 1433046 1433067 FUS 1000 +
我正在运行以下代码以使该文件以制表符分隔:
with open(file="file.txt",mode='r+') as file:
for line in file:
file.write('t'.join(line.strip().split() + 'n'))
但是我得到以下错误:
TypeError: can only concatenate list (not "str") to list
您正在获得错误,因为您试图将列表和字符串一起添加。.split()
将创建一个列表,列表添加一个'n'
就是它错误的原因
为了处理单词之间的额外空格,strip()
每个单词在您join()
之前的行中使用制表符。顺便说一句,收集您想要写入变量的所有文本(下面代码中的contents
),并将其写入所需的格式之后。
试试这个:
contents = ""
with open("file.txt", "r+") as f:
for line in f:
contents += "t".join(word.strip() for word in line.split()) + "n"
with open("file.txt", "w") as f:
f.write(contents)
你得到错误,因为分割返回一个列表,你正试图添加STR与列表,你可以得到你的任务完成:
with open(file="file.txt",mode='r+') as file:
file.write(file.read().replace(" ", "t"))