首页 > 解决方案 > 如何根据 \n 拆分列表字符串

问题描述

我有一个这样的列表:

['Sehingga 8 Ogos 2021: Jumlah kes COVID-19 yang dilaporkan adalah 18,688 kes (1,262,540 kes)\n\nPecahan setiap negeri (Kumulatif):\n\nSelangor - 6,565 (465,015)\nWPKL - 1,883 (140,404)\nJohor - 1,308 (100,452)\nSabah -Lagi 1,379 (93,835)\nSarawak - 581 (81,328)\nNegeri Sembilan - 1,140 (78,777)\nKedah - 1,610 (56,598)\nPulau Pinang - 694 (52,368)\nKelantan - 870 (49,433)\nPerak - 861 (43,924)\nMelaka - 526 (35,584)\nPahang - 602 (29,125)\nTerengganu - 598 (20,696)\nWP Labuan - 2 (9,711)\nWP Putrajaya - 63 (4,478)\nPerlis - 6 (812)\n\n- KPK KKM']

如何根据 \n 的开始和结束位置获取某个单词。

预期输出:

1)Sehingga 8 Ogos 2021

2)Selangor - 6,565 (465,015)

3)WPKL - 1,883 (140,404)

4)Johor - 1,308 (100,452)

等等 ..

标签: pythonliststrip

解决方案


您可以使用re模块来完成任务:

import re

lst = [
    "Sehingga 8 Ogos 2021: Jumlah kes COVID-19 yang dilaporkan adalah 18,688 kes (1,262,540 kes)\n\nPecahan setiap negeri (Kumulatif):\n\nSelangor - 6,565 (465,015)\nWPKL - 1,883 (140,404)\nJohor - 1,308 (100,452)\nSabah -Lagi 1,379 (93,835)\nSarawak - 581 (81,328)\nNegeri Sembilan - 1,140 (78,777)\nKedah - 1,610 (56,598)\nPulau Pinang - 694 (52,368)\nKelantan - 870 (49,433)\nPerak - 861 (43,924)\nMelaka - 526 (35,584)\nPahang - 602 (29,125)\nTerengganu - 598 (20,696)\nWP Labuan - 2 (9,711)\nWP Putrajaya - 63 (4,478)\nPerlis - 6 (812)\n\n- KPK KKM"
]

out = []
for v in lst:
    for g in re.findall(r"^(.*?\(.*?\))\n", v, flags=re.M):
        out.append(g.split(":")[0])

print(*out, sep="\n")

印刷:

Sehingga 8 Ogos 2021
Selangor - 6,565 (465,015)
WPKL - 1,883 (140,404)
Johor - 1,308 (100,452)
Sabah -Lagi 1,379 (93,835)
Sarawak - 581 (81,328)
Negeri Sembilan - 1,140 (78,777)
Kedah - 1,610 (56,598)
Pulau Pinang - 694 (52,368)
Kelantan - 870 (49,433)
Perak - 861 (43,924)
Melaka - 526 (35,584)
Pahang - 602 (29,125)
Terengganu - 598 (20,696)
WP Labuan - 2 (9,711)
WP Putrajaya - 63 (4,478)
Perlis - 6 (812)

推荐阅读