代码(复制如下)读入一个文件,执行一些操作,并将原始文件的一个子集输出到一个新文件中。我如何稍微调整一下,然后将从初始文件输出到输出文件的所有内容,但是添加一个“flag”列,其中的值为“1”,其中该行是当前要输出的行(我们最感兴趣的行的子集)?其他行(当前仅在输入文件中)的新“flag”列中有一个空白或“0”。在
对我来说,这个问题经常发生,只要有一个通用的方法,就可以节省很多时间。在
非常感谢您的帮助!在
import csv
inname = "aliases.csv"
outname = "output.csv"
def first_word(value):
return value.split(" ", 1)[0]
with open(inname, "r", encoding = "utf-8") as infile:
with open(outname, "w", encoding = "utf-8") as outfile:
in_csv = csv.reader(infile)
out_csv = csv.writer(outfile)
column_names = next(in_csv)
out_csv.writerow(column_names)
id_index = column_names.index("id")
name_index = column_names.index("name")
try:
row_1 = next(in_csv)
written_row = False
for row_2 in in_csv:
if first_word(row_1[name_index]) == first_word(row_2[name_index]) and row_1[id_index] != row_2[id_index]:
if not written_row:
out_csv.writerow(row_1)
out_csv.writerow(row_2)
written_row = True
else:
written_row = False
row_1 = row_2
except StopIteration:
# No data rows!
pass
我在编写CSV时总是使用听写器,主要是因为它更显式(这使我更容易:))。下面是一个高度程式化的版本,你可以做什么。我所做的更改包括:
考虑到这一点,下面是示例:
相关问题 更多 >
编程相关推荐