python - 如何在 Python 中将包括双引号在内的单词提取到 LIKE GOOGLE 列表中
问题描述
我正在创建一个网站的搜索功能。我需要将用户输入的句子类型提取到列表中,但要求引号中的单词应该是列表的一项。
请关注我期望中的Jeff Watson和New 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"]
如果您的答案也适用于单引号,那是最好的。
解决方案
寻找带引号的子字符串或单词的正则表达式:
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)]
推荐阅读
- java - 除非我按下主页按钮并重新进入活动,否则 RecyclerView 不显示任何项目
- javascript - Vuejs:奇怪的类渲染
- amazon-redshift - Redshift - 无法将查询结果加载到表中 - 领导节点问题
- web-applications - 从 WebApp 连接到 LAN 上的设备
- r - 使用R增加ggplot中log x轴某些值之间的分辨率?
- python - 在 Pandas 中选择行并将它们转换为列
- r - 从两列rstudio中随机选择一个数字
- kubernetes - 在 Prometheus 中找出标签的不同值并设置警报
- javascript - 将“值”添加到 div
- java - 如何最好地解释 Java 中的 synchronized(this) 关键字?