[英]Convert string list to list in python
我有一個字符串如下,
val = '["10249/54","10249/147","10249/187","10249/252","10249/336"]'
我需要解析它並在/之后取值並將其放入列表中,如下所示
['54','147','187','252','336']
我的代碼 : [a[a.index('/')+1:] for a in val[1:-1].split(',')]
輸出 : ['54"', '147"', '187"', '252"', '336"']
它有雙引號也“這是錯誤的。我試過以下
c = []
for a in val[1:-1].split(','):
tmp = a[1:-1]
c.append(tmp[tmp.index('/')+1:])
輸出:
['54', '147', '187', '252', '336']
有沒有更好的方法來做到這一點?
你可以使用literal_eval
在一行中完成:
from ast import literal_eval
val = ['54','147','187','252','336']
a = [i.split('/')[-1] for i in literal_eval(val)]
print(a)
輸出:
['54', '147', '187', '252', '336']
literal_eval()
將您的字符串轉換為列表,然后i.split('/')[-1]
獲取斜杠之后的內容。
是的...假設每個值都有/
就像你的例子,這是優越的:
>>> from ast import literal_eval
>>>
>>> val = '["10249/54","10249/147","10249/187","10249/252","10249/336"]'
>>> [int(i.split('/')[1]) for i in literal_eval(val)]
[54, 147, 187, 252, 336]
*編輯插入遺忘的括號
嘗試使用正則表達式!
你可以用這種方式一行完成。
import re
val = '["10249/54","10249/147","10249/187","10249/252","10249/336"]'
output = re.findall('/(\d+)', val) # returns a list of all strings that match the pattern
print(output)
結果: ['54', '147', '187', '252', '336']
您可以嘗試使用json
模塊將字符串轉換為列表
>>> import json
>>> val ='["10249/54","10249/147","10249/187","10249/252","10249/336"]'
>>> list(map(lambda x: x.split('/')[-1], json.loads(val)))
>>> ['54', '147', '187', '252', '336']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.