gpt4 book ai didi

python - 在 Python 3 中,如果键中包含特殊字符,是否可以访问列表值?

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

我有一个有趣的问题。我每封电子邮件都会收到一份报告,并使用 csv.DictReader 解析 CSV,如下所示:

with open(extracted_report_uri) as f:
reader = csv.DictReader(f)
for row in reader:
report.append(row)

不幸的是,CSV 包含一个名为 “eCPM (€)” 的列,这给我留下了一个如下所示的列表:{'eCPM (€)': '1.42'}

Python 确实不喜欢 print(report[0]['eCPM (€)']),因为它拒绝接受欧元符号作为 key 。

我尝试创建一个包含 € 的 unicode 字符串并将其用作 key ,但这也不起作用。我要么想按原样访问该值(显然),要么干脆去掉欧元。

建议的重复答案涵盖了删除 BOM 而不是访问我的 key 的主题。我还按照评论中的建议通过 report[0][u'eCPM (€)'] 进行了尝试。不起作用。 KeyError:“eCPM (�)”

评论中的建议对我来说也不起作用。使用 report[0][u'eCPM (%s)' % '€'.encode('unicode-escape')] 会导致 KeyError: "eCPM (b'\\\\u20ac')"

最佳答案

经过更多的研究,我似乎找到了如何正确地做到这一点。正如我在 Google/Stackoverflow 上看到的各种 BOM/UTF-8 和 DictReader 问题,这里是完整的代码:

情况:您有一个 CSV 文件,其字段名称中包含字节顺序标记 (BOM)0xEF,0xBB,0xBF 以及 €äöµ@ 或类似字符等特殊字符,并且想要正确读取它稍后访问键:值对。

在我的示例中,CSV 有一个字段名称 eCPM (€),其工作原理如下:

import csv
report = []

with open('test.csv', encoding='utf-8-sig') as f:
reader = csv.DictReader(f)
for row in reader:
report.append(row)

print(report[0][u'eCPM (€)'])

在此解决方案之前,我使用函数删除了 BOM,但实际上没有必要这样做。如果您将 open()encoding='utf-8-sig 一起使用,它将自动正确处理 BOM 并正确编码整个文件。

使用[u'€'],您可以轻松访问生成的列表 unicode 样式的值。

感谢您的评论,让我走上正轨!

关于python - 在 Python 3 中,如果键中包含特殊字符,是否可以访问列表值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33786425/

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