尝试设置详细正则表达式时:
# set up variables
ankerwords = ['beerdigt','bestattet','begraben','beigesetzt']
# combine the words, five words before/after
rx = re.compile(r'''
(?:\b\w+\W+){5} # five words before
(?:{})
(?:\W+\w+\b){5} # five words thereafter
'''.format("|".join(ankerwords)), re.X)
这会引发一个错误IndexError: tuple index out of range
。
{5}
,但是如何绕过它而不将字符串分成几个部分,即。
'''(?:\b\w+\W+){5}''' + '(?:{})'.format(...)
这更像是一个风格问题,真的。你知道吗
琼几乎能很好地用各种方法摆脱牙套。我唯一要补充的是,如果您关心的是风格,并且您可以奢侈地使用
Python 3.6+
,那么您可以使用将大括号加倍工作,它告诉
format
将大括号视为普通字符(它将它们转义:How can I print literal curly-brace characters in python string and also use .format on it?):或使用旧式
%
格式:在这种情况下,由于
{5}
是重复的,可能是这样的:(这样可以避免将大括号加倍,并允许一次性“参数化”字数)
相关问题 更多 >
编程相关推荐