gpt4 book ai didi

python - CSV 到 dict,dict 找不到该项目

转载 作者:行者123 更新时间:2023-12-01 05:09:49 27 4
gpt4 key购买 nike

我正在将 CSV 转换为 dict,所有值均已正确加载,但有一个问题。

CSV:

Testing    testing\nwe are into testing mode
My\nServer This is my server.

当我将 CSV 转换为 dict 时,如果我尝试使用 dict.get() 方法,它将返回 None

当我调试时,我得到以下输出:

{'Testing': 'testing\\nwe are into testing mode', 'My\\nServer': 'This is my server.'}

My\nServer 键有一个额外的反斜杠。

如果我执行 .get("My\nServer"),我得到的输出为 None

有人可以帮助我吗?

#!/usr/bin/env python

import os
import codecs
import json
from csv import reader

def get_dict(path):
with codecs.open(path, 'r', 'utf-8') as msgfile:
data = msgfile.read()
data = reader([r.encode('utf-8') for r in data.splitlines()])
newdata = []
for row in data:
newrow = []
for val in row:
newrow.append(unicode(val, 'utf-8'))
newdata.append(newrow)
return dict(newdata)

谢谢

最佳答案

您需要使用 \\n 正确转义换行符:

>>> d = {'Testing': 'testing\\nwe are into testing mode', 'My\\nServer': 'This is my server.'}
>>> d.get('My\\nServer')
'This is my server.'

或者您可以使用raw string literal不需要额外的转义:

>>> d.get(r'My\nServer')
'This is my server.'

请注意,原始字符串将以这种方式处理所有反斜杠转义序列,而不仅仅是换行符 \n

如果您动态获取值,可以使用 str.encodestring_escape or unicode_escape encoding :

>>> k = 'My\nServer' # API call result
>>> k.encode('string_escape')
'My\\nServer'
>>> d.get(k.encode('string_escape'))
'This is my server.'

关于python - CSV 到 dict,dict 找不到该项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24409753/

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