Я посмотрел много похожих вопросов, однако мои разделители не являются специальными символами, такими как "\" или "*", поэтому ни одно из решений не сработало. Я записываю свои результаты в файл в python и снова открываю его для чтения и обработки.
file1.txt
control1
1 10 12
1 34 44
2 1 -3
control2
3 4 -10.3
3 3.390 4
Я разделяю каждую запись до тех пор, пока не увижу строку с 'control' в chapters
:
import re
import sys, string, glob, os
with open('file1.txt') as f:
with open("control_output.txt", "w") as output:
mytext = f.read()
chapter = re.split("control[0-2]+\n", mytext)
i=1
print chapter[i]
output.write(chapter[i])
for filename in glob.glob(os.path.join(filePath, 'control_output.txt')):
merged_table=open(filename,'r')
for line in merged_table:
line = line.strip().split('\t')
print line
Однако он ничего не печатает, так как строка не имеет разделителя табуляции. Если я go выйду из скрипта перед чтением файла и изменим все пробелы на вкладки, то он будет работать:
sed -i 's/ \+ /\t/g' control_output.txt
Тогда у меня будет вывод:
['1', '10', '12']
['1', '34', '44']
['2', '1', '-3']
I также попытался с subprocess.call однако
subprocess.call(["sed", "-i", 's/ \+ /\t/g', "control_output.txt"])
Тогда у меня есть вывод:
[[]]
Я попытался re.split с несколькими пробелами:
line = re.split(r'\s*', line)
Что также дало
[[]]
Однако ожидаемый результат должен быть:
['1', '10', '12']
['1', '34', '44']
['2', '1', '-3']
Как разделить строку с несколькими разделителями?