假设我希望内置的 python csv writer 忽略数组中的某些字符串值(在输出中的逗号之间不放置任何值)。例如,
my_list = [4, 'foo', 'close', 9, 0]
csv output => 4, ,'close', 9, 0
我会提供一个参数'foo'来指定被作者忽略,这可能吗?如果是这样,有人可以帮助实施吗?
如果你有一个二维的行列表要写,你可以这样做:
lines = [[4, 'foo', 'close', 9, 0], [5, 'foo', 'close', 9, 0]]
import csv
with open("outfile.csv", "wb") as outf:
w = csv.writer(outf)
for line in lines:
w.writerow(["" if e == "foo" else e for e in line])
>>> import csv
>>> my_list = [4, 'foo', 'close', 9, 0]
>>> with open('test.csv', 'w') as fout:
w = csv.writer(fout, delimiter=',')
w.writerow([x if x != 'foo' else ' ' for x in my_list])
>>> print open('test.csv').read()
4, ,close,9,0
您可以使用类似这样的方法在列表中进行替换:
map(lambda x : str(x) if x != 'foo' else ' ', my_list)
并且只需执行 ajoin
创建输出字符串:
','.join(map(lambda x : str(x) if x != 'foo' else ' ', my_list))
你可以试试这个:
ignored_strings = {'foo', 'ignored2', 'ignored3'}
my_list_filtered = [value if value not in ignored_strings else '' for value in my_list]
这会将您要忽略的每个值替换为空字符串。然后,您可以使用 csv 编写器打印出新列表。
您还可以使用列表推导末尾的“if”语句从列表中删除不需要的值,具体取决于您希望输出的外观。