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