gpt4 book ai didi

python - csv.writer 正在为一个键写入值,但不是为所有其他键写入值

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:17 27 4
gpt4 key购买 nike

我有一个包含 key 对行的 csv 文件。

让我们调用 key、'key' 和不同的值 'a''b''c' 等..

我正在尝试使用 csv.writer,以便仅当值为 'b' 时才将行写入文件。

到目前为止我有以下代码:

csvfileR = []

with open('csvfileR.csv', 'r') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
csvfileR.append(row)

w = open('csvfileW.csv','w')
fieldnames = ['key']
writer = csv.writer(w)
writer.writerow(fieldnames)

for i in range(len(csvfileR)):
if csvfileR[i]['key'] == 'b':
print (csvfileR[i]['key'])
fields = [csvfileR[i]['key']]
writer.writerow(fields)

问题是,当我们过滤值 'a' 时,writer 会正确写入(if csvfileR[i]['key'] == 'a '),但当我们过滤任何其他值时,会给出一个空白的 csv 文件(if csvfileR[i]['key'] == 'b' (或 'c' 'd' 等))。

print 方法适用于所有值,因此 Dict 可以正确附加。

具体来说,csvfileR 包含我的 Assets 交易数据。我希望 csv.writer 创建“csvfileW”,其中仅包含一系列不同 Assets 中的一个 Assets 的交易数据。

一行 csvfileR 看起来像:

OrderedDict([('日期', '2016.09.12'), ('交易 Assets 名称', 'Facebook 股票'), ('购买价格', '100 美元'), ('出售价格,“$150”)

问题是,如果我过滤掉第一个 Assets “Facebook Stock”,csv.writer 将会写入,但如果我过滤掉任何其他 Assets ,则不会写入。

所以

if csvfileR[i]['交易 Assets 名称'] == 'Facebook 股票'

将正确创建 CSV 文件,但是,

if csvfileR[i]['交易 Assets 名称'] == 'Apple Stock'

if csvfileR[i]['交易 Assets 名称'] == 'FedEx Stock'

将创建一个空白的 CSV 文件。

但是,

print (csvfileR[i]['交易 Assets 名称'])

每次遇到时都会打印出'Apple'或''FedEx'

最佳答案

如上所述,考虑使用一个 with 来处理两个文件的读写,甚至避免需要 csvfileR 列表。

with open('csvfileR.csv', 'r') as csvfile, open('csvfileW.csv', 'w') as outfile:
fieldnames = ['key']
writer = csv.writer(outfile)
writer.writerow(fieldnames)

reader = csv.DictReader(csvfile)

for row in reader:
if row['key'] == 'b':
print (row['key'])
fields = [row['key']]
writer.writerow(fields)

但是,上面的代码看起来很奇怪,因为只有 b 会在输出 csv 的第一列中输出。帖子可能不反射(reflect)实际代码。根据需要调整上述内容。

关于python - csv.writer 正在为一个键写入值,但不是为所有其他键写入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53403219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com