У меня есть текстовый файл, который выглядит так:

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
1
khalessi22 30 Авг 2017 в 01:49

3 ответа

Лучший ответ
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)
2
Solaxun 29 Авг 2017 в 23:23

Ниже записывается новый файл «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
MLMiller 29 Авг 2017 в 23:28

Разделить на новую строку вместо:

contentOfThatFile.split('\n')

Затем выполните итерацию по каждой строке и проигнорируйте все строки с SPLIT:

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

Это заменит каждую строку в файле с SPLIT новой строкой.

1
TerryA 29 Авг 2017 в 22:51