簡體   English   中英

如何將由單位和數字組成的列表變成僅包含數字的列表?

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

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