我正在编写使用正则表达式搜索子字符串的代码,然后将其替换为其他字符串,但我对我的"如果有任何()"声明。
我不断收到错误,说全局名称x未定义'但是在if if语句中使用x并不像使用&#34那样定义变量x ;对于列表中的x"使x成为一个已定义的变量,然后可以在语句的其余部分中使用它?
(例如:)
for x in someList:
print x
我特别不明白的是,代码会检查x是否在与列表中的相同x匹配的行中。' reg'。如果我将print x更改为print' true'例如,如果表达式在行中,它将打印为true,但每行只打印一次,即使每行有多个匹配,并且它拒绝打印实际项目我试图比赛/找!
我无法找到此语法的任何特定文档,可以清楚地解释它。
for line in inp:
reg = a list of expressions that match a regex findall
if any(x in line for x in reg):
print x
答案 0 :(得分:0)
在Python 3中,print
是一个函数,你可以这样做:
found_something = any((x in line) and not print(x) for x in reg)
或
if any((x in line) and not print(x) for x in reg):
# do something appropriate
由于print
返回None
,赢得会影响any
表达式的值,该值也会仅打印{{1}符合条件的s。
在Python 2中,您可以使用
使x
成为一个函数
print
然后你可以使用上面显示的结构。
答案 1 :(得分:0)
看起来你真正想要的是:
for line in inp:
reg = a list of expressions that match a regex findall
for x in reg:
if x in line:
print x
或者如果你想要一个清单:
for line in inp:
reg = a list of expressions that match a regex findall
l = list(x for x in reg if x in line)
print l