Найти - Пользователи
Полная версия: Поиск по файлу и отображение
Начало » Python для новичков » Поиск по файлу и отображение
1 2 3 4
n2b
И еще вопросик, на эту же тему.
Теперь надо чтобы она записывала строку в файл, начиная с новой строки, т.е.:
файл вида

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:
….
s0rg
Порядок расположения важен?
n2b
s0rg
Порядок расположения важен?
Нет. Но названий таблиц и regexpov может быть много.
s0rg
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))
DXSh
Доброго Всем времени суток!
Стоит задача на работе выписывать данные из тестового файла файл si_01112011.txt
Нужно в этом файле искать параметр Lmax = 3.6 и др. подобные параметры и формировать XML
Хочу автоматизировать этот процес на Питоне…
Буду благодарен кто напишет алгоритм обработки на словах и посоветует какие модули использовать и какую доку почитать для решения этой задачи…
n2b
s0rg!!!
Большущие спасибо, но если ты из Москвы, то “спасибо” могу выразить в бочковом/литровом эквиваленте любой вино-водочной продукцией!

Работоспособность в своей системе еще не проверял, но если что, я надеюсь могу рассчитывать на ответы здесь.
n2b
s0rg, мне уже даже не прилично писать что-либо, но я совсем не дружу с файлами и не работал никогда со строками.

Я говорю, таблица такая-то, он мне выводит нужные мне строки(то что ты помог мне сделать), теперь мне нужно взять и удалить 1 строчку, со сдвигом вверх, чтобы не было пробелов между regexps.

NameTable0:
re1
re2
re3
re4

удаляем re3

NameTable0:
re1
re2
re4

И да, двух ОДИНАКОВЫХ re3 во ВСЕМ файле НЕ может быть. То есть достаточно открыть файл и удалить просто одну линию из него.
n2b
вопрос снят. нашел кучу решений в гугле. спасибо, извините.


тааак-с, есть трабл.
Вот код на 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)
Но есть косяк. Я делаю следующую замену:
replaceAll(file, “ ”, str)
И он вместо str пихает пробел, но оставляет пустую строчку, как мне убрать пустую строчку?

Щас проверил, не совсем то что мне нужно…. Пока не нашел способа лучше тупо удалить строчку из файла и убрать пустую(оставшуюся).

Щас еще раз проверил всё. Мне совсем это не походит, оно открывает файл и удаляет ВЕЗДЕ (по всему файлу) str… а не только 1 строчку…

А еще было бы круто найти определенную строчку и ТОЛЬКО ЕЁ заменить на другую строчку.
s0rg
А внимательно и вдумчиво прочитать код?
sfw['NameTable0'].remove('re3')
upd:

Сразу добалю, можно удалить и всю секцию сразу:
del sfw['NameTable0']
n2b
А всю секцию сразу удалить это какой код?
sfw.remove('string') мне понятно, а в каком контексте писать del sfw?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB