Python:如何在字符串中的某些单词之间找到文本?
Posted
技术标签:
【中文标题】Python:如何在字符串中的某些单词之间找到文本?【英文标题】:Python: How can I find text between certain words in a string? 【发布时间】:2019-12-04 18:08:47 【问题描述】:比如有一个字符串或者txt
"""
asfas @111 dfsfds @222 dsfsdfsfsd dsfds
dsfsdfs sdfsdgsd @333 dsfsdfs dfsfsdf @444 dfsfsd
dsfssgs sdsdg @555 fsfh
"""
想要的结果:
"""
@111
@222
@333
@444
@555
"""
使用下面的代码,我只能看到第一个结果。
import re
html="asfas @111 dfsfds @222 dsfsdfsfsd dsfds"
result = re.search('@"(.+?) ', html)
x = (result.group(0))
print(x)
如何改进我的代码?
【问题讨论】:
re.findall 或 re.finditer 怎么样? 【参考方案1】:您可以使用re.findall
方法代替re.search
(re.search 仅搜索正则表达式模式产生匹配的第一个位置):
import re
txt = '''asfas @111 dfsfds @222 dsfsdfsfsd dsfds
dsfsdfs sdfsdgsd @333 dsfsdfs dfsfsdf @444 dfsfsd
dsfssgs sdsdg @555 fsfh'''
print(*re.findall(r'@\d+', txt), sep='\n')
打印:
@111
@222
@333
@444
@555
【讨论】:
【参考方案2】:如果你总是有 @ 后跟 3 位数字,那么:
import re
text = '''asfas @111 dfsfds @222 dsfsdfsfsd dsfds
dsfsdfs sdfsdgsd @333 dsfsdfs dfsfsdf @444 dfsfsd
dsfssgs sdsdg @555 fsfh
'''
results = re.findall(r'(@\d3)', text)
print(results)
所以()
表示保留@ 后跟仅3 位数字的模式。
【讨论】:
【参考方案3】:即使不使用正则表达式也可以做到这一点:
html="asfas @111 dfsfds @222 dsfsdfsfsd dsfds"
x = [i for i in html.split() if i.startswith('@')]
输出:
['@111', '@222']
【讨论】:
以上是关于Python:如何在字符串中的某些单词之间找到文本?的主要内容,如果未能解决你的问题,请参考以下文章