我需要在textfile中删除一些列,其中一列在中间,然后添加两个新列。 这是我的代码。它与第一行不同。如何让它适用于所有线路?
infile = open('a.txt').read()
list =infile.split( );
print ("Hello " + list[0]+ "world" + list[2] + " " + list[3]+"313")
例如,我的原始文件中有5列:
1 2 3 4 5
5 2 2 5 2
1 2 5 6 2
1 2 5 1 2
1 5 6 7 8
输出应该如下所示:
1 "yyy" 4 "xxx"
5 "yyy" 5 "xxx"
1 "yyy" 6 "xxx"
1 "yyy" 1 "xxx"
1 "yyy" 7 "xxx"
答案 0 :(得分:0)
更新了答案:
分别将split
应用于每一行,然后打印格式化的行。如果您只想打印结果:
with open('a.txt', 'r') as infile:
for line in infile:
line = line.split()
new_line = '{0} "yyy" {1} "xxx"'.format(line[0], line[3])
print(new_line)
如果要将输出写入新文件b.txt
(而不是仅打印):
with open('a.txt', 'r') as infile:
with open('b.txt', 'w') as outfile:
for line in infile:
line = line.split()
new_line = '{0} "yyy" {1} "xxx"\n'.format(line[0], line[3])
outfile.write(new_line)
示例文件的输出:
1 "yyy" 4 "xxx"
5 "yyy" 5 "xxx"
1 "yyy" 6 "xxx"
1 "yyy" 1 "xxx"
1 "yyy" 7 "xxx"
答案 1 :(得分:0)
默认情况下拆分在空格处拆分......您可以检查列表的长度。
尝试做一个readlines()并按照你的方式迭代它。
答案 2 :(得分:-1)
在打开的文件对象上使用read()方法会将文件的整个内容读作一个字符串。因此,要将每一行存储为列表,您必须根据行分隔符(\ n,\ r,\ n \ r)拆分字符串。使用readlines()方法将文件的内容逐行存储为列表对象。
要回答有关更新文件内容的问题,我会使用readlines()方法和列表推导来快速完成这几行代码。请参阅下面的代码示例。变量row_delimiter和new_content可以替换为您需要的任何内容。
#declare paths
path1 = "C:\foo.txt"
path2 = "C:\bar.txt"
#read file and update content
with open(path1, "r") as read:
content = [line.split(row_delimiter) for line in read.readlines()]
[row[index] = new_content for row in content]
read.close()
#write new content
with open(path2, "r") as wrt:
[wrt.write(line) for line in content]
wrt.close()