从字符串中拆分并删除整行

时间:2017-08-29 22:49:12

标签: python python-2.7 split

我有一些看起来像这样的文本文件:

blah blah 
2131232 SPLIT
fdsfdsf dfds
fds fdsdf 
fdsf fds
3423423 SPLIT
dsf 324 fdsr
3243 fsdf 3wrfs
543534 SPLIT

如果我这样做:contentOfThatFile.split('SPLIT')我留下了文件开头的数字。无论如何使用split()删除正在分割的整个行?这样输出就是:

blah blah 

fdsfdsf dfds
fds fdsdf 
fdsf fds

dsf 324 fdsr
3243 fsdf 3wrfs

3 个答案:

答案 0 :(得分:2)

import re

foo = re.split('.* SPLIT',x)
print(foo)

对于您的具体示例,包括转换为列表并将其保留为字符串(无论您的偏好如何),这里有一个更详细的代码段:

words = """blah blah 
           2131232 SPLIT
           fdsfdsf dfds
           fds fdsdf 
           fdsf fds
           3423423 SPLIT
           dsf 324 fdsr
           3243 fsdf 3wrfs
           543534 SPLIT"""

import re
import itertools

foo =  re.split('.* SPLIT\n*',words)
re_joined = ''.join(foo).strip()
re_split = re_joined.split('\n')

print(re_joined)
print(re_split)

答案 1 :(得分:2)

下面写了一个新文件" newfile.txt"源文件" texttosplit.txt"排除文件中包含" SPLIT。"

的所有行
with open('texttosplit.txt') as fo:
    for line in fo:
        if "SPLIT" in line:
            line=""
        newfile=open("newfile.txt",'a')
        newfile.write(line)
        newfile.close()

答案 2 :(得分:1)

换算换行:

contentOfThatFile.split('\n')

然后遍历每一行并忽略其中包含SPLIT的所有行:

[line if 'SPLIT' not in line else '\n' for line in contentOfThatFile.split('\n')]

这将使用新行替换文件中包含SPLIT的每一行。