如何在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]