Unicode到字典(unicode包含撇号标点)

时间:2018-08-01 21:50:49

标签: python dictionary converter unicode-string

我已经从CSV文件中读取了以下Unicode:

line = u"{u'There's Still Time': u'foo'}"

我希望能够将其转换为字典,以便能够通过以下方式访问它:

line["There's Still Time"] 
Output: 'foo'

请帮助。

1 个答案:

答案 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。