如何将新列添加到包含特定值的行?

时间:2018-06-15 13:18:58

标签: python csv parsing

我是Python编码的新手。 我需要在行中添加包含特定单词的新列。 我有csv文件如下:

one  two three four five 
two  one five three four 
five two four three five

我需要在第二列中包含“two”的所有行添加“2”。

像这样:

one  two three four five 2
two  one five three four
five two four three five 2

提前致谢

3 个答案:

答案 0 :(得分:1)

这是一个非常简单的解析,所以我不打扰csv模块。只需打开文件并遍历每一行。在每一行上执行split,使用空格作为分隔符将行拆分为一个列表(默认)。接下来的两行应该是显而易见的:那些有“两个”作为第二列(拆分列表中的第二个项目)的那些行得到补充,那些那些不是。

读完文件并修改行后,将其写入新文件。

newlines = []
with open("thecsv.txt") as f:
    for l in f:
        if l.split()[1] == "two":
            newlines.append(l.strip() + " 2\n")
        else:
            newlines.append(l)
with open("newcsv.txt", 'w') as f:
    for l in newlines:
        f.write(l)

答案 1 :(得分:1)

您可以执行类似

的操作
import csv

with open('input.csv','r') as csvinput:
    with open('output.csv', 'w') as csvoutput:
        writer = csv.writer(csvoutput, lineterminator='\n')
        reader = csv.reader(csvinput)

        all = []

        for row in reader:
            if(row[1] == "two"):
                row.append(2)
            all.append(row)

        writer.writerows(all)

答案 2 :(得分:0)

您可以立即打开正在阅读的文件和要写入的文件:

with open('my_text.txt') as read_file, open("output.txt", "w+") as write_file:
    for line in read_file:

读取每一行并删除后面的空白

        line.strip()

如果它们之间有空格,则拆分每一行:

        my_list = line.split()
        if my_list[1] == "two":
            my_list.append("2")

在列表中添加“2”,然后在join列表中添加每个项目之间的空格。在该行的末尾添加一个新行。

        write_file.write(" ".join(my_list) + "\n")