[英]How to turn one list element in two?
可以說我有一個像這樣的列表:
bla = ['3,00 € 3,50 €\r\n', '3,00 €\r\n', '6,50 €\t5,50 €\r\n']
每次我在一個項目中有兩個價格時,我都想將該項目變成兩個項目。 所以看起來像這樣:
['3,00 €', '3,50 €', '3,00 €', '6,50 €', '5,50 €']
使用正則表達式提取與<digits>,<digits> €
模式匹配的所有價格<digits>,<digits> €
並將結果列表展平:
import re
l = [item for s in [re.findall("[0-9]+,[0-9]+\s?€", x) for x in bla] for item in s]
編輯:
甚至更短,將您的列表連接到單個字符串,然后提取與所述模式匹配的所有字符串:
l = re.findall("[0-9]+,[0-9]+\s?€", " ".join(bla))
不使用正則表達式:根據歐元符號拆分並重新格式化,在此過程中將列表弄平,並去除所有空白:
bla = ['3,00 € 3,50 €\r\n', '3,00 €\r\n', '6,50 €\t5,50 €\r\n']
result = ["{} {}".format(x.strip(),"€") for item in bla for x in item.split("€") if x.strip()]
print(result)
結果:
['3,00 €', '3,50 €', '3,00 €', '6,50 €', '5,50 €']
這是另一種無需正則表達式的方式:
from itertools import chain
bla = ['3,00 € 3,50 €\v\n', '3,00 €\v\n', '6,50 €\t5,50 €\v\n']
result = [r for r in chain.from_iterable(((v+' €' for v in (y.strip()
for y in s.split('€') if y.strip()))
for s in bla))]
print(result)
輸出:
['3,00 €', '3,50 €', '3,00 €', '6,50 €', '5,50 €']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.