我有以下字符串:
d = {"ET": 1, "TO": 2, "NY": 3, "SC": 4}
marriage_data['Code'] = marriage_data['coded_municipality'].map(d)
我需要将其作为一个字符串数组,但如果我尝试u"['coure', 'explicar', 'nefasta', 'el camió', 'net', 'unir', 'branca', 'educat', tènue, 'hum', 'decisiva', 'avís']"
它就会显示eval
SyntaxError: invalid syntax
并不认为它是要解析的内容。
我该怎么办?
答案 0 :(得分:1)
该字符串不是有效的Python,正如juanpa.arrivillaga所说。
s = u"['coure', 'explicar', 'nefasta', 'el camió', 'net', 'unir', 'branca', 'educat', tènue, 'hum', 'decisiva', 'avís']"
但您可以使用以下方法将其列入列表:
s = ''.join([char for char in s if not any(char==x for x in "[]'")])
s = s.split(', ')
['coure', 'explicar', 'nefasta', 'el camió', 'net', 'unir', 'branca', 'educat', 'tènue', 'hum', 'decisiva', 'avís']
第一行删除所有这些字符:
[
]
'
这样只剩下逗号和单词字符的空格。第二个将字符串分隔为相同列表的元素。
注意:由于我使用' ,'
作为分隔符,因此任何元素都不应将其作为子字符串。
修改强>
根据评论中的建议,我也想出了这个:
''.join([char for char in s if char not in "[]')"]).split(', ')
答案 1 :(得分:1)
json.loads
希望您的字符串采用双引号:"..."
您可以用双引号替换单引号以获取有效的json:
s = u"['coure', 'explicar', 'nefasta', 'el camió', 'net', 'unir', 'branca', 'educat', 'tènue', 'hum', 'decisiva', 'avís']"
s = s.replace("'", '"')
l = json.loads(s)
print(l)
# ['coure', 'explicar', 'nefasta', 'el camió', 'net', 'unir', 'branca', 'educat', 'tènue', 'hum', 'decisiva', 'avís']
但如果你的任何一个词包含引用,这将失败......