【问题标题】:Join elements of list with various conditions加入具有各种条件的列表元素
【发布时间】:2022-08-07 18:29:54
【问题描述】:

对于这个列表

pays_list=[\"France\",\"francais\",\"€200\", \"1kg\",\"20€\",\"Espagne\",\"espagnol\",\"€20\",
\"Allemagne\",\"allemand\",\"deutsch\",\"€100\",\"2kg\", \"300€\",
\"Belgique\",\"belge\",\"frite\",\"€30\"]

pays_concatenate=[]

for i, elm in enumerate(pays_list):
    if \"€\" in elm:
        del pays_list[i]
    pays_list=pays_list

for i in pays_list:
    for e in i:
        if any(e in \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" for e in i):
            print(i)

\"i\" 将等于带有大写字母的元素...(法国、西班牙等...)

我想在下一个大写字母之前添加元素

我除了这个输出

pays_concatenate=[\"France francais\",\"Espagne espagnol\",
    \"Allemagne allemand deutsch\",
    \"Belgique belge frite\"]
  • 您的代码根本没有给出您显示的所有输出。为什么法国有 5 个值,然后西班牙有 3,然后是 6,然后是 4。如果没有规则,那就很难了
  • 假设您的实际缩进是正确的,您的意思是:pays_concatenate.append(elm)
  • 你的预期输出是什么?

标签: python list enumerate


【解决方案1】:

使用itertools.groupby 将字符串分组为带有"€" 和不带有"€" 的字符串,并使用" " 加入每个组:

import itertools

pays_list=["France","francais","€200", "1kg","20€","Espagne","espagnol","€20",
"Allemagne","allemand","deutsch","€100","2kg", "300€",
"Belgique","belge","frite","€30"]


pays_concatenate = [
    " ".join(g) 
    for _, g in itertools.groupby(pays_list, lambda e: "€" in e)
]
print(pays_concatenate)
# ['France francais', '€200', '1kg', '20€', 'Espagne espagnol', '€20',
#  'Allemagne allemand deutsch', '€100', '2kg', '300€',
#  'Belgique belge frite', '€30']

【讨论】:

    猜你喜欢
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多