我正在使用由开发中的应用程序发送的python从JSON文档中提取字符串。这个问题类似于其他一些问题,但由于加号,我在使用x = ast.literal_eval('[0448521958, +61439800915]')
时遇到了麻烦。
我正在尝试将每个电话号码作为python列表中的字符串x,但我不知道该怎么做。我收到了这个错误:
raise ValueError('malformed string')
ValueError: malformed string
答案 0 :(得分:2)
您的问题不是只是+
第一个数字以0
开头,这是一个八进制数...它只支持0-7 ...但数字以8结尾(还有其他数字大于8)
但事实证明你的问题不止于此
您可以使用正则表达式修复加号
fixed_string = re.sub('\+(\d+)','\\1','[0445521757, +61439800915]')
ast.literal_eval(fixed_string)
我不知道你怎么能解决八进制数问题
答案 1 :(得分:1)
从技术上讲,字符串不是有效的JSON。如果要忽略+,可以在评估之前将其从文件或字符串中删除。如果要保留它,则必须用引号括起该值。
答案 2 :(得分:1)
我认为问题是ast.literal_eval
试图将电话号码解释为数字而不是字符串。试试这个:
str = '[0448521958, +61439800915]'
str.strip('[]').split(', ')
结果:
['0448521958', '+61439800915']