我正在尝试删除以某些字符开头的字符串中的所有行。我尝试了下面的代码块,但无法正常工作。我的代码仅应打印"Any thanks
“作为结果,但是它将输出整个原始文本。
text = """Any thanks \n first_************ \n last_************ has \n"""
from io import StringIO
s = StringIO(text)
for line in (s):
if not line.startswith(' first_') \
or not line.startswith(' last_'):
print(line)
答案 0 :(得分:1)
每个字符串都将使or
完全符合条件,因为这两个条件是互斥的-用and
组成条件:
if not line.startswith(' first_') \
and not line.startswith(' last_'):
答案 1 :(得分:0)
您的or
语句始终返回True
。例如,如果该行以' first_'
开头,则not line.startswith(' first_')
返回False
,而not line.startswith(' last_')
返回True
。 False or True
的值为True
。
您可以通过以下几种方式编写此代码,但最直接的方法是重写if语句:
for line in (s):
if not (line.startswith(' first_') or line.startswith(' last_')):
print(line)
答案 2 :(得分:-1)
问题似乎出在您的导入StringIO
上。我尝试在每个换行符处拆分text
,但效果很好。以下代码在我的计算机上产生了预期的结果:
text = """Any thanks \n first_************ \n last_************ has \n"""
s1 = text.split("\n")
for line in s1:
if not (line.startswith(' first_') \
or line.startswith(' last_')):
print(line)