Первоначально я решил проблему на bash при помощи cut,sed. Но работает эта штука примерно час т.к. объемистые файлы обрабатывает. Решил переделать на Python.
обрабатываемый текст может выглядеть примерно так:
слова какие-то 4234 цифры буквы что угодно символы - +
и табличка:
|текст |452 | цифры | пробелы |
То, что я написал уже - смотрит на первый символ строки. Если первый символ "|", то значит перед нами нужная строка (элемент таблицы) и её надо обработать. В идеале я хочу получить список списков (каждая строка таблицы список в общем списке "таблице"), где элементы списка [['слово', '234', 'слово'], ['слово', '234', 'слово']] будут без пробелов и без пустых элементов. И если какой-то элемент между разделителями в табличке пуст, то его надо бы просто пропустить, если слово/цифра между разделителями не заполнило все пространство между разделителями и есть пробел - надо бы от пробела избавиться. Но на практике я получаю что-то вроде списка списков [[' ', 'слово_и_пробел ', ' '],['123', ' ' ,' слово и_чертов_пробле' ]] надо бы как-то предусмотреть, что мне нужны элементы списков: "любые символы между разделителями, кроме пробела и кроме пустоты". Но вот что-то пока не могу догнать как это описать у себя. Не знаком с регекспами питона и вообще слабо знаю питон пока что.
#!/usr/bin/python
import sys
import re
import os
towrl = sys.argv[1]
dodestlip = []
destlip = open(towrl, "r")
dodestlip = destlip.readlines()
length1 = len(dodestlip)
destlip.close()
respa = []
for I in range(length1):
mregexp = re.compile( '^\|' )
if len(mregexp.findall( dodestlip[I] )) != 0:
mregexp = re.compile( r"[|]" )
respa.append(mregexp.split( dodestlip[I] ))
print respa
какие есть варианты?