簡體   English   中英

將字符串列表轉換為python中的列表

[英]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']

re.findall生成一個名為regexp的所有匹配項的新列表。 有關此主題的更多信息,請查看正則表達式文檔

您可以嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM