最佳替代方案关于芬德尔可以使用列表而不是regex

2024-09-30 05:32:22 发布

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

我对编码有点陌生,所以如果答案很明显,我提前道歉。你知道吗

我正在寻找一个Python或SQL解决方案,它可以从一个表中单个字段中的超过170k个字符串的给定列表中识别所有关键字。 利用re.findall是没有必要的,但这是我所知道的最接近我正在寻找的解决方案的方法。你知道吗

例如,如果我的关键字列表包括: biteanklesfleshwound和我的表中的目标列按顺序包含以下字段:

I’ll bite your ankles.

Only a flesh wound.

Flesh ankles bite only.

我希望在表中创建一个新列,该列按顺序包含以下字段:

bite ankles

flesh wound

flesh ankles bite

为了使这个问题更加复杂,我只能在我被迫使用的环境中访问有限的库,所以越基本越好。提前感谢您为我提供了一个shell,我可以用它来插入我的表和列表。你知道吗


Tags: 字符串答案re利用编码列表sql顺序
2条回答
import string

key_list = ["bite", "ankles", "flesh", "wound"]
input_list = ["I'll bite your ankles", "Only a flesh wound.", "Flesh ankles bite only."]
output_list = []

up_key_list = [i.lower() for i in key_list]

for inp in input_list:
   output_list.append(" ".join([i for i in string.split(inp, " ")  if string.lower(i) in up_key_list]))

print (output_list)

对于Python,可以从以下内容开始:

>>> # make a set of the keywords
... keywords = {"bite", "ankles", "flesh", "wound"}
>>> # get the input as list of strings
... strings = ["I’ll bite your ankles", "Only a flesh wound", "Flesh ankles bite only"]
>>> [" ".join(filter(lambda x: x.lower() in keywords, s.split(" "))) for s in strings]
['bite ankles', 'flesh wound', 'Flesh ankles bite']

相关问题 更多 >

    热门问题