遍历具有多个条件的所有行

时间:2018-11-11 08:55:29

标签: python loops split line

我想一次遍历所有行,并检查字符串是否在任何行中,如果是,则应用一个函数并跳出循环,如果不是,则检查第二个字符串并执行相同的操作事情。如果在任何一行中都没有找到任何字符串,则继续进行else ..

split= text.as_string().splitlines()
for row in split:
   if 'Thanks Friend' in row.any():
     apply_some_function()
     break
   elif 'other text' in row.str.any():
     apply_some_function()
     break
   else:
     .......

我不断收到错误消息:


AttributeError                            Traceback (most recent call last)
      <ipython-input-179-8f0e09f62771> in <module>()
      1 for row in split:
      2 
----> 3   if 'Thanks Friend' in row.str.any():
      4     apply_some_function()
      5     break

AttributeError: 'str' object has no attribute 'str'

2 个答案:

答案 0 :(得分:0)

尝试以下方法。但是请记住,文本将在回车符处分割,这可能不是您想要的。另外,如果“其他文本”被拆分,您是否想做些不同的事情?如果您这样做,则需要告诉我们。

split = text.split("\n")
if any(x for x in split if 'Thanks Friend' in x):
    apply_some_function()
elif any(x for x in split if 'other text' in x):
    apply_some_function()
else:
    pass

您也可以这样做:

if any(x for x in split if 'Thanks Friend' in x) or \:
any(x for x in split if 'other text' in x):
    apply_some_function()

答案 1 :(得分:0)

您正在使用的对象的属性/方法在python中不存在。这就是AttributeError的意思。

查找对象所有现有属性的一种方法是使用python-console中的函数help()。例如,键入help(str)以获取可以在字符串上使用的所有方法。

当您想在每一行上做不同的事情时,我认为没有办法“一次”去所有行。因此,您必须保留原始代码。这是它的固定版本:

split = text.splitlines()
for row in split:
    if 'Thanks Friend' in row:
        apply_some_function()
        break
    elif 'other text' in row:
        apply_some_function()
     break
   else:
       ...