我有:
"[15765,22832,15289,15016,15017]"
我想要:
[15765,22832,15289,15016,15017]
我应该怎么做才能将该字符串转换为列表?
P.S。未经我的允许,帖子已被编辑,并且丢失了重要的部分。类似于列表的行的类型为“字节”。这不是字符串。
P.S。 №2。我的初始代码是:
import urllib.request, re
f = urllib.request.urlopen("http://www.finam.ru/cache/icharts/icharts.js")
lines = f.readlines()
for line in lines:
m = re.match('var\s+(\w+)\s*=\s*\[\\s*(.+)\s*\]\;', line.decode('windows-1251'))
if m is not None:
varname = m.group(1)
if varname == "aEmitentIds":
aEmitentIds = line #its type is 'bytes', not 'string'
我需要从行中获取列表
网页上的行看起来像
[15765, 22832, 15289, 15016, 15017]
答案 0 :(得分:4)
假设s是您的字符串,则可以使用split并将每个数字转换为整数:
s = [int(number) for number in s[1:-1].split(',')]
有关拆分功能的详细信息: Python3 split documentation
答案 1 :(得分:3)
您所拥有的是一个字符串清单。您可以使用json
解析器将该信息解析为相应的list
import json
test_str = "[15765,22832,15289,15016,15017]"
l = json.loads(test_str) # List that you need.
或执行此操作的另一种方法是使用ast
import ast
test_str = "[15765,22832,15289,15016,15017]"
data = ast.literal_eval(test_str)
结果是
[15765, 22832, 15289, 15016, 15017]
要了解为什么使用eval()
是不好的做法,可以参考this answer
答案 2 :(得分:2)
您还可以使用正则表达式从字符串中提取数字值,如下所示:
import re
lst = "[15765,22832,15289,15016,15017]"
lst = [int(number) for number in re.findall('\d+',lst)]
上面代码的输出是
[15765, 22832, 15289, 15016, 15017]