簡體   English   中英

如何從字符串列表中刪除未使用的字符

[英]How to remove unused characters from a list of strings

例如,我的清單是:

list_1 =  [ '[1234,', '4567,', '19234,', '786222]' ]

預期輸出是:

list_1 = [1234, 4567, 19234, 786222]

坦率地說,從中獲取整數列表的最簡單方法是將其作為表示列表的字符串重新組合在一起:

>>> list_1 = ['[1234,', '4567,', '19234,', '786222]']

>>> list_repr = ' '.join(list_1)
>>> list_repr
'[1234, 4567, 19234, 786222]'

然后通過ast.literal_eval提供它:

>>> from ast import literal_eval
>>> literal_eval(list_repr)
[1234, 4567, 19234, 786222]

如果您通過在已經表示列表的字符串上使用split方法獲得list_1的可能事件,我相信您可以弄清楚如何縮短這個過程......

您可以strip壞字符並轉換為int

>>> [int(s.strip("[],")) for s in list_1]
[1234, 4567, 19234, 786222]

使用 Python 2:

>>> map(int, ''.join(list_1).strip('[]').split(','))
[1234, 4567, 19234, 786222]

在 Python 3 map返回一個 map 對象,它只會懶惰地計算。 要創建列表,我們需要明確。 這是一件好事,更高效和通用:

>>> list(map(int, ''.join(list_1).strip('[]').split(',')))
[1234, 4567, 19234, 786222]

您可以使用翻譯來刪除不需要的字符。

>>> [int(s.translate(None,"[],")) for s in list_1]
[1234, 4567, 19234, 786222]

希望這可以幫助。

如果您不知道前面的“壞”字符集,您還可以過濾每個字符串中的所有數字,然后將結果轉換為整數:

>>> list_1 =  [ '[1234,', '4567,', '19234,', '786222]' ]
>>> [int(filter(lambda x: x.isdigit(), s)) for s in list_1]
[1234, 4567, 19234, 786222]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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