将看起来像列表“[0448521958,+61439800915]”的字符串从 JSON 导入 Python 并使其成为实际列表?

Import string that looks like a list "[0448521958, +61439800915]" from JSON into Python and make it an actual list?

我正在使用 python 从 JSON 文档中提取字符串,该字符串由开发中的应用程序发送。这个问题类似于其他一些问题,但由于加号,我在使用 x = ast.literal_eval('[0448521958, +61439800915]') 时遇到了问题。

我正在尝试将每个 phone 数字作为 python 列表 x 中的一个字符串,但我不确定该怎么做。我收到此错误:

raise ValueError('malformed string')
ValueError: malformed string

你的问题只是+

第一个数字以0开头,这是一个八进制数...它只支持0-7 ...但数字以8结尾(也有其他大于8的数字)

但事实证明你的问题不止于此

您可以使用正则表达式来修复加号

fixed_string = re.sub('\+(\d+)','\1','[0445521757, +61439800915]')
ast.literal_eval(fixed_string)

但是我不知道你能对八进制数问题做些什么

从技术上讲,该字符串无效 JSON。如果你想忽略 +,你可以在计算它之前将它从文件或字符串中删除。如果要保留它,则必须用引号将值括起来。

我认为问题在于 ast.literal_eval 试图将 phone 数字解释为数字而不是字符串。试试这个:

str = '[0448521958, +61439800915]'
str.strip('[]').split(', ')

结果:

['0448521958', '+61439800915']