首页 > 解决方案 > 在字符串python中的特定关键字之后提取列表

问题描述

我有字符串

my_string = "K1:s1,\ns2,\ns3,\n\nK2:g1,\ng2,\ng3,\nK3:m1,\nm2,\nm3"

的简化视图my_string

"K1:s1,
 s2,
 s3,

 K2:g1,
 g2,
 g3,    
 K3:m1,
 m2,
 m3"

我需要查找关键字 K1:,K2:,K3: 并提取列表中另一个关键字之后和之前的所有内容。例如:

List1 = [s1, s2, s3]
List2 = [g1, g2, g3]
List3 = [m1, m2, m3]

字符串中关键字的顺序不固定。K1: 可以在 K2: 和 K3: 之后,反之亦然。而且换行符 '\n' 的数量也不是固定的。

有没有简单的正则表达式方法来解决这个问题?

标签: pythonregexpython-3.x

解决方案


最简单的是使用正则表达式并拆分单词。

result = []
for word in re.split('\W+', my_string):
    if word.startswith('K'):
        if result:
            print result
        result = []
    else:
        result.append(word)

if result:
    print(result)

推荐阅读