重新编译不正常

时间:2018-03-29 03:35:59

标签: python regex string

我要使用此列表关键字:

keywords = ['a', 'about', 'advance', 'advanced', 'affect', 'after', 'ameliorate', 'among', 'and', 'any', 'apply', 'are', 'as', 'at', 'be', 'been', 'better', 'fix', 'fixed', 'following', 'for', 'form', 'from', 'from a', 'further', 'get', 'got', 'have', 'having', 'help', 'hike', 'hold', 'i', 'impact', 'improve', 'in',  'why', 'will', 'with', 'work with', 'would', 'you', 'your', 'of',]

使用如下的简单句子:

'risk to healthy and fitness'
'risk of healthy and fitness'

我的代码是:

keywords = keywords

def Searchy():
    name = 'risk to healthy and fitness'
    name33 = ['exercise','fit','fitness','cardio',]#standard words
    regex1 = re.compile(r'\b(%s+.])\b'%'|'.join(name33))
    regex2 = re.compile(r'\b(%s+.)\b'%'|'.join(keywords))
    h = [m.start()for m in re.finditer (regex1one,name)]
    name55 = [name[h[0]:]][0]
    print name55

我想过滤掉大部分混乱或单词,只是从第一个关键字开始获取字符串,结果如下:

'to healthy and fitness'

如果我的第一个关键字是'of',我会得到一个正确的字符串,例如:

'of healthy and fitness'

如果我的第一个关键字是使用的任何其他单词而不是'of',我会改为:

'healthy and fitness'

我希望使用所有关键字的所有结果都相同。我怎么可能做错了怎么办呢?

2 个答案:

答案 0 :(得分:2)

我认为您的问题出在regex1中。你调用name33,这是查看该列表/字符串并在其后提供所有内容。当我将其更改为name时,它会提供正确的输出。

def Searchy():
    keywords = ['a', 'about', 'advance', 'advanced', 'affect', 'after', 'ameliorate', 'among', 'and', 'any', 'apply', 'are', 'as', 'at', 'be', 'been', 'better', 'fix', 'fixed', 'following', 'for', 'form', 'from', 'from a', 'further', 'get', 'got', 'have', 'having', 'help', 'hike', 'hold', 'i', 'impact', 'improve', 'in',  'why', 'will', 'with', 'work with', 'would', 'you', 'your', 'of',]
    name = 'risk to healthy and fitness'
    name33 = ['exercise','fit','fitness','cardio',]#standard words
    regex1 = re.compile(r'\b(%s+.])\b'%'|'.join(name))
    regex2 = re.compile(r'\b(%s+.)\b'%'|'.join(keywords))
    h = [m.start()for m in re.finditer (regex1,name)]
    name55 = [name[h[0]:]][0]
    print name55

Searchy()

另外,你在h语句中有regex1one。我把它改成了regex1

答案 1 :(得分:0)

您的代码与您编写的代码完全相同:

  

如果我的第一个关键字是'of',我会得到一个正确的字符串

是的,因为'of'确实在您的关键字列表中。

  

如果我的第一个关键字是使用的任何其他单词而不是'of',我会改为

是的,因为在您提供的示例中,“健康和健康”之前的唯一字词是“冒险”,“转移”和“来自”,其中只有'of'位于您提供的关键字列表中。如果您希望第二个示例获得相同的结果,则需要在关键字列表中添加“to”