首页 > 解决方案 > 如何在 Python 中将包括双引号在内的单词提取到 LIKE GOOGLE 列表中

问题描述

我正在创建一个网站的搜索功能。我需要将用户输入的句子类型提取到列表中,但要求引号中的单词应该是列表的一项。

请关注我期望中的Jeff WatsonNew York这两个词。

期待:

str = 'Hello, I am "Jeff Watson" from a part of "New York".'

result = ["Hello", "I", "am", "Jeff Watson", "from", "a", "part", "of", "New York"]

如果您的答案也适用于单引号,那是最好的。

标签: pythonregex

解决方案


寻找带引号的子字符串或单词的正则表达式:

import re
string = 'Hello, I am "Jeff Watson" from NY.'
[next(x for x in m if x)
    for m in re.findall(r'"([^"]*)"|\'([^\']*)\'|(\w+)', string)]

(另外,尽量避免str在 Python 中用作变量名,因为它通常包含字符串类型。)

这是另一种方法:

[m[1] for m in re.findall(r'(["\'])?((?(1).*?\1|\w+))', string)]

推荐阅读