如果没有定义any()语句,则在内部声明变量?

时间:2016-02-11 04:44:03

标签: python

我正在编写使用正则表达式搜索子字符串的代码,然后将其替换为其他字符串,但我对我的"如果有任何()"声明。

我不断收到错误,说全局名称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

2 个答案:

答案 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