python - 在字符串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' 的数量也不是固定的。
有没有简单的正则表达式方法来解决这个问题?
解决方案
最简单的是使用正则表达式并拆分单词。
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)
推荐阅读
- fortran - 如何避免在此 Fortran Hello World 代码中出现构建失败错误
- javascript - 将数据从表转换为表
- excel - 团队 A 和 B 随机生成器没有重复 - 代码仅适用于团队 A
- angular - combineLatest 使用 Firestore 发出 2 次值,仅增加 1 个值
- c++ - 具有多行选择的 QListWidget,看起来像一个表格
- android - 当应用程序关闭或在后台时对本机商店通知数据做出反应
- nlp - 命名实体识别相对日期
- vue.js - Vue js数据未显示在模板上
- javascript - 如果点匹配除换行符以外的所有 ASCII 字符,而 \n 匹配换行符,为什么 `"a\r\nb".match(/a(.|\n)*b/)` 不匹配?
- latex - 将 LaTeX 中的引文编译为 Markdown 文本