我有一根绳子:
s = "['9780310714675', '9780763630614', '9781416925330', '9780310714569']"当加载到内存中时,这将变成:
'[\'9780310714675\', \'9780763630614\', \'9781416925330\', \'9780310714569\']'我想知道如何将其转换为字符串列表:
strList = ['9780310714675', '9780763630614', '9781416925330', '9780310714569']我试过这样做:
strList = json.loads(s)但是,我得到了以下错误:
Traceback (most recent call last):
File "/home/xxx/dev/python/data-processing/MongoDB/query.py", line 101, in <module>
isbnList = marcQuery.stringToStringList(isbnString)
File "/home/xxx/dev/python/data-processing/MongoDB/query.py", line 74, in stringToStringList
strList = json.loads(s)
File "/home/xxx/anaconda3/lib/python3.7/json/__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "/home/xxx/anaconda3/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/home/xxx/anaconda3/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)有人能给我一些怎么做的提示吗?
发布于 2020-10-04 00:09:27
只需使用eval()函数即可。它将计算一个字符串,就好像它是python表达式。
strList = eval(s)编辑:有些人认为ast.literal_eval更好。对于生产代码和任何不能信任输入源的情况,这都是100%正确的。然而,在学习python和编写爱好项目时,您知道可以信任输入,因为您编写了输入。
import ast
def read_value(string):
try:
return ast.literal_eval(string)
except:
print("Unsafe to eval: \"" + string "\"")我不认为告诉新程序员总是遵循正确的数据安全是有用的,同时学习。事实上,我宁愿他们自己做实验,从错误中吸取教训。
“我知道你还不明白这是怎么回事,但只要复制这个神奇的代码块就好了,因为它更安全”
关于它们不同之处的参考:https://stackoverflow.com/a/15197698/5987669
https://stackoverflow.com/questions/64190057
复制相似问题