У меня есть текстовый файл, например так: http://pastie.org/10309944Python Найти метод в строках кажется, терпит неудачу
Это содержит число, соответствующие списки сегментов EDI, которые могли бы быть связаны с ними. Моя цель - написать скрипт, который вводит один из этих кодов (числа) в качестве входных данных и выводит соответствующие списки. Списки окружены символами «-», чтобы упростить синтаксический анализ.
Я написал следующий код: `class SegmentsUsedFinder (object): '' 'Находит код транзакции и возвращает возможные сегменты. «»»
def __init__(self, transaction_code):
'''Initializes the segment finder.
Args:
transaction_code: The transaction code to find possible segments from.
'''
self._transaction_code = transaction_code + " -"
def find_segment(self):
'''Finds the possible segments that correspond to the
transaction code.
'''
fileObject = open("transactioncodes.txt", 'r')
data = ""
for line in fileObject:
line = line.rstrip('\n').rstrip()
data += line
fileObject.close()
position = data.find(self._transaction_code) + len(self._transaction_code)
with open("transactioncodes.txt", 'r') as file:
file.seek(position)
segments = ""
char = ""
while True:
char = file.read(1)
if char == "-":
break
segments += char
return segments
Я затем создать объект искателя так:
finder = SegmentsUsedFinder("270")
print finder.find_segment()
Этот код на самом деле работает, но когда я регулирую строку внутри конструктора SegmentsUsedFinder до 271 или 837 он не по какой-то причине , Я думаю, что я, возможно, неправильно использую метод find, но он работает для первого экземпляра. Я также могу заставить его работать 271, если я добавлю 2 к позиции и буду работать на 837, если я добавлю 4 в позицию.
Любая помощь была бы принята с благодарностью, спасибо.
В чем смысл наличия значения в 'data' и последующего использования файла для поиска? Почему бы вам не выполнить поиск внутри данных для 837, найти 1-й «-» из этой позиции и 2-й «-» с этой позиции? Текст между 2 "-" - это то, что вы ищете. Это правильно? – shahkalpesh
Да, это правильно, я думаю, вы правы, что мне действительно не нужно открывать файл снова. – EgoKilla
Вы удаляете правое пустое пространство и символы новой строки в первом поиске, но не во втором. Это может просто дать вам разницу в позиции 2/4. – Evert