python程序 - 修改文本文件中的列

时间:2014-07-12 22:53:19

标签: python file text

我需要在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" 

3 个答案:

答案 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()