Python:如何在字符串中的特定单词之间找到文本?

2024-09-29 04:27:24 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,有一个字符串或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)

如何改进代码?


Tags: 字符串代码retxthtmlresultdfsfsddsfds
3条回答

如果始终有@后跟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'(@\d{3})', text)

print(results)

所以()意味着保持一个只有@后跟3个数字的模式。你知道吗

您可以使用re.findall方法而不是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

即使不使用regex也可以这样做:

html="asfas @111 dfsfds @222 dsfsdfsfsd dsfds"
x = [i for i in html.split() if i.startswith('@')]

输出

['@111', '@222']

相关问题 更多 >