我已经从CSV文件中读取了以下Unicode:
line = u"{u'There's Still Time': u'foo'}"
我希望能够将其转换为字典,以便能够通过以下方式访问它:
line["There's Still Time"]
Output: 'foo'
请帮助。
答案 0 :(得分:2)
鉴于字符串中存在单引号,您甚至必须尝试进行一些预处理,然后才能尝试将其解析为dict
。假设目标dict
中的所有字符串都是unicode,并且必须在结束字符串后紧跟一个控制字符(即}
,:
,,
,{{1 }},空格...),您可以搜索所有与这两个类别都不匹配的撇号并将其转义。然后,您可以使用ast.literal_eval()
将其解析为}
,例如:
dict
请记住,这很简单:
import ast
import re
APOSTROPHE_ESCAPE = re.compile(r"(?<!u)'(?![.}:,\s])")
line = u"{u'There's Still Time': u'foo'}"
your_dict = ast.literal_eval(APOSTROPHE_ESCAPE.sub(r"\'", line))
print(your_dict) # {u"There's Still Time": u'foo'}
会抛弃它-当然,它在源头上也将是非法字典,但请记住这些限制并相应地调整预处理regex。