[英]How do you make a list comprised of a unit and number into just a list with numbers?
我有一個list = ["154 cm", "123cm", "145cm"]
如何將列表更改為["154", "123", "145"]
?
我使用了split()
,但似乎效果不佳。
嘗試這個:
import re
a = ["154 cm", "123cm", "145cm"]
res = re.findall('\d+', ' '.join(a))
print(res) #['154', '123', '145']
你可以試試:
>>> a = ["154 cm", "123cm", "145cm"]
>>> [i.replace("cm", "").strip() for i in a]
['154', '123', '145']
您可以在列表中的每個元素上使用re.match
來匹配字符串開頭的數字( \d+
):
import re
l = ["154 cm", "123cm", "145cm"]
out = [re.match(r'\d+', v).group() for v in l]
Output:
['154', '123', '145']
您可以通過用空字符串替換空格和"cm"
來做到這一點,如下所示:
raw_data = ["154 cm", "123cm", "145cm"]
data = [_.replace(" ", "").replace("cm", "") for _ in raw_data]
print(data)
您可能想使用正則表達式。 例如:
import re
l = ["154 cm", "123cm", "145cm"]
print([re.sub(r"\s*(\d+).*", r"\1", s) for s in l])
給出:
['154', '123', '145']
這將匹配整個字符串,包括可能的空格,后跟一個或多個數字,然后是其他任何內容,並僅替換它的數字。
(限制:這里假設輸入列表的元素都與表達式匹配,因為任何不匹配的元素在 output 中都將顯示為未修改。)
嘗試這個:
from itertools import repeat
def remove_unit(data, unit):
lst = list(map(str.partition, data, repeat(unit)))
return [item[0].strip() for item in lst]
data = ["154 cm", "123cm", "145cm"]
print(remove_unit(data, 'cm'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.