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

如何在python中的其他文本之间选择特定文本?,python,split,findall,Python,Split,Findall,下面是一个示例字符串: text=“你好,我喜欢吃牛肉三明治、牛肉干、鸡肉馅饼、鸡肉汉堡,还有鸡肉手指和其他鸡肉肉。” 我想把“馅饼”、“汉堡”这几个词分开, “手指”和“肉”来自本文。我想把鸡肉后面的单词和结束语之前的单词分开 我甚至对如何分离单个文本感到困惑。我可以在“chicken”之后分割,但如何选择文本直到下一个“ 我想遍历一个列表,将变量保存到数组中。感谢您提供的帮助。您可以使用正则表达式: import re text = "hello, i like to eat beef '

下面是一个示例字符串:

text=“你好,我喜欢吃牛肉三明治、牛肉干、鸡肉馅饼、鸡肉汉堡,还有鸡肉手指和其他鸡肉肉。”

我想把“馅饼”、“汉堡”这几个词分开, “手指”和“肉”来自本文。我想把鸡肉后面的单词和结束语之前的单词分开

我甚至对如何分离单个文本感到困惑。我可以在
“chicken”
之后分割,但如何选择文本直到下一个


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

您可以使用正则表达式:

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']

这是一个很好的正则表达式用例

import re
print(re.findall(r"chicken '(.*?)'", text))
下面是对正则表达式的解释:

下面是运行的python代码:

正则表达式,部分地:

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

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

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

(?<=chicken\s')[^']+(?=')

仅从第一次出现的“chicken”中选择句子的一部分:

在空格上拆分该文本:

chicken_words = chicken_text.split(" ")
扫描列表中以单引号开头和结尾的单词:

for word in chicken_words:
    if word[0] == "'" and word[-1] == "'":
        print word[1:-1]

如果单引号中的单词本身包含空格,这将不起作用,但在您提供的示例文本中,情况并非如此。

Regex也是我的第一个想法,看起来您在这方面击败了我。这是一个很好的解决方案,正是我想要的。我试着用正则表达式,但却不知该怎么做。感谢一开始,规范的表达方式可能会让人望而生畏,但好消息是,我们有大量的资源。是一个关于正则表达式的免费课程,我可以推荐(虽然它使用javascript)。你缺少最后一行的括号,
print word[1:-1]
应该是
print(word[1:-1])
@IsmaelPadilla这个问题没有标记为python3。你说得对,我的错!我习惯于使用python3,所以在我看来,使用没有括号的print是错误的。很抱歉非常感谢你。正是我一直坚持的。请在这里添加您的代码。
chicken_words = chicken_text.split(" ")
for word in chicken_words:
    if word[0] == "'" and word[-1] == "'":
        print word[1:-1]