如何在python中的其他文本之间选择特定的文本?

2024-09-27 00:22:19 发布

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

下面是一个字符串示例:

text = "hello, i like to eat beef 'sandwiches' and beef 'jerky' and chicken 'patties' and chicken 'burgers' and also chicken 'fingers' and other chicken 'meat' too."

我想把“馅饼”、“汉堡”分开, “手指”和“肉”来自本文。我想把鸡肉后面的词和收盘价之前的词分开

我对如何把一个单独的分开感到困惑。我可以在"chicken '之后分割,但是如何选择文本直到下一个'

我想遍历一个列表,将变量保存到一个数组中。谢谢你的帮助


Tags: andto字符串text示例hellolikealso
3条回答

这是一个很好的regex用例

import re
print(re.findall(r"chicken '(.*?)'", text))

下面是正则表达式的解释:https://regex101.com/r/8IdseD/1

下面是运行的python代码:https://repl.it/repls/SquareQuerulousModes

正则表达式,一部分一部分:

  • chicken '-匹配该文本
  • (启动一个捕获组re.findall将吐出的部分
  • .-匹配任何字符
  • *?-…任意次数,但尽可能少(这是为了确保我们不捕获最后的'
  • )-结束捕获组
  • '-匹配文字'

因此re.findall将为您提供组中捕获的所有子字符串的列表

可以使用零宽度环视框来匹配周围环境:

(?<=chicken\s')[^']+(?=')
  • (?<=chicken\s')是匹配chicken '的零宽度正查找
  • [^']+将部分匹配到下一个单引号,即所需的子字符串

  • (?=')是与所需子串后的'匹配的零宽度正前瞻

示例:

In [713]: text = "hello, i like to eat beef 'sandwiches' and beef 'jerky' and chicken 'patties' and chicken 'burgers' and also chicken 'fingers' and other chicken 'meat' too."                             

In [714]: re.findall(r"(?<=chicken\s')[^']+(?=')", text)                                                                                                                                                    
Out[714]: ['patties', 'burgers', 'fingers', 'meat']

可以使用正则表达式:

import re

text = "hello, i like to eat beef 'sandwiches' and beef 'jerky' and chicken 'patties' and chicken 'burgers' and also chicken 'fingers' and other chicken 'meat' too."

match = re.findall(r'chicken \'(\S+)\'', text)
print (match)

输出:

['patties', 'burgers', 'fingers', 'meat']

相关问题 更多 >

    热门问题