我正在尝试在正则表达式表达式中使用字符串。例如:
import re
def foo(text, pattern):
pattern = re.compile(r'Get pattern some how', re.I)
find = pattern.findall(text)
ans = ' '.join(i for i in find).lower()
return ans
text = input('Text:')
pattern = input('Pattern:')
foo(text, pattern)
ans = foo(text, pattern)
print(ans)
我正在使用python 3.6.4和Mac OS X.我需要的是模式可以根据'模式'而变化。字符串,然后返回,并打印出来。我会使用字符串连接吗?还有其他方法吗?如果您需要任何其他信息,请通过评论与我联系。感谢您考虑这个问题!
答案 0 :(得分:0)
只需将参数pattern
直接放在re.compile()
放置正则表达式模式的位置即可。
import re
def foo(text, pattern):
pat = re.compile(pattern, re.I)
find = pat.findall(text)
ans = ' '.join(find).lower() # <--- `find` is a list already
return ans
text = input('Text:')
pattern = input('Pattern:')
# foo(text, pattern) <---- You don't need this line here
ans = foo(text, pattern)
print(ans)
注意我将您的本地变量从pattern
更改为pat
以避免混淆。我删除了list comprehension
,因为findall
已经返回list
。此外,您第一次调用foo()
时毫无意义,因为返回的结果不会分配给任何内容。