Форум сайта python.su
И еще вопросик, на эту же тему.
Теперь надо чтобы она записывала строку в файл, начиная с новой строки, т.е.:
файл вида
NameTable0:
0
1
2
3
4
N
NameTable1:
0
1
2
3
4
N
.
.
.
NameTableN:
N
То есть мне надо записать, к примеру, в NameTable0 после N(это последняя строка), также надо после добавленной строки еще и поставить Ентер(т.е. пустую строку), чтобы получилось так:
NameTable0:
0
1
2
3
4
N
N1 (добавленная строка)
NameTable1:
….
Отредактировано (Ноя. 25, 2011 22:36:44)
Офлайн
Порядок расположения важен?
Офлайн
s0rgНет. Но названий таблиц и regexpov может быть много.
Порядок расположения важен?
Офлайн
class StrangeFileWorker(object):
def __init__(self):
self._sections = dict()
def load_file(self, file_name):
with open(file_name) as fd:
self.load_string(fd.read())
def load_string(self, data):
cur_key = None
lines = data.split('\n')
for ln in lines:
if not ln:
continue
if ln.endswith(':'):
cur_key = ln.strip(':')
self._sections[cur_key] = list()
elif cur_key is not None:
self._sections[cur_key].append(ln)
def __getitem__(self, key):
return self._sections[key]
def __delitem__(self, key):
del self._sections[key]
def __repr__(self):
return '\n'.join(['%s:\n%s\n' % (k, '\n'.join(v)) for k,v in self._sections.iteritems()])
if __name__ == '__main__':
sfw = StrangeFileWorker()
print 'Loading file...'
sfw.load_file('test_input')
print 'Got:'
print sfw
print 'NameTable1 contains:'
print sfw['NameTable1']
print 'Adding value RegExpN2 to NameTable1'
sfw['NameTable1'].append('RegExpN2')
print 'Got:'
print sfw
print 'Writing result to file'
with open('test_output', 'w') as fd:
fd.write(repr(sfw))
Офлайн
Доброго Всем времени суток!
Стоит задача на работе выписывать данные из тестового файла файл si_01112011.txt
Нужно в этом файле искать параметр Lmax = 3.6 и др. подобные параметры и формировать XML
Хочу автоматизировать этот процес на Питоне…
Буду благодарен кто напишет алгоритм обработки на словах и посоветует какие модули использовать и какую доку почитать для решения этой задачи…
Офлайн
s0rg!!!
Большущие спасибо, но если ты из Москвы, то “спасибо” могу выразить в бочковом/литровом эквиваленте любой вино-водочной продукцией!
Работоспособность в своей системе еще не проверял, но если что, я надеюсь могу рассчитывать на ответы здесь.
Офлайн
s0rg, мне уже даже не прилично писать что-либо, но я совсем не дружу с файлами и не работал никогда со строками.
Я говорю, таблица такая-то, он мне выводит нужные мне строки(то что ты помог мне сделать), теперь мне нужно взять и удалить 1 строчку, со сдвигом вверх, чтобы не было пробелов между regexps.
NameTable0:
re1
re2
re3
re4
удаляем re3
NameTable0:
re1
re2
re4
И да, двух ОДИНАКОВЫХ re3 во ВСЕМ файле НЕ может быть. То есть достаточно открыть файл и удалить просто одну линию из него.
Отредактировано (Ноя. 28, 2011 00:09:15)
Офлайн
вопрос снят. нашел кучу решений в гугле. спасибо, извините.
тааак-с, есть трабл.
Вот код на replace строки.
def replaceAll(file,searchExp,replaceExp):
for line in fileinput.input(file, inplace=1):
if searchExp in line:
line = line.replace(searchExp,replaceExp)
sys.stdout.write(line)
Отредактировано (Ноя. 28, 2011 00:57:56)
Офлайн
А внимательно и вдумчиво прочитать код?
sfw['NameTable0'].remove('re3')
del sfw['NameTable0']
Отредактировано (Ноя. 28, 2011 09:57:44)
Офлайн
А всю секцию сразу удалить это какой код?
sfw.remove('string') мне понятно, а в каком контексте писать del sfw?
Офлайн