我是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
提前致谢
答案 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")