删除字符串中以某些字符开头的行

时间:2019-07-23 01:23:24

标签: python python-3.x string text nlp

我正在尝试删除以某些字符开头的字符串中的所有行。我尝试了下面的代码块,但无法正常工作。我的代码仅应打印"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)

3 个答案:

答案 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_')返回TrueFalse 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)