2015-07-17 1 views
0

У меня есть файл с именем item.dat, содержащей ключевые словами в квадратных скобках:Python Разбор с именем переменным и квадратные скобки

[ITEM1] 
banana 
peach 
apple 
orange 
grapes 
[END] 
[ITEM3] 
tennis 
bowling 
[END] 
........ 

Я хочу строки между ключевыми словами в квадратных скобках, подлежащая обработке. Переменная wil содержит заключенные в скобки строки, которые я хочу извлечь. Проблема в том, как выполнить сравнение строк для «[ItemName]»?

del item[:] 
ItemName = "ITEM3" 
with open('item.dat') as input_data: 
    for line in input_data: 
     if line.strip() == "\[ItemName\]": # the problematic line 
      break 
    for line in input_data: # This keeps reading the file 
     if line.strip() == '[END]': 
      break 
     print line 
     item.append(line) 
+0

Переменная ItemName будет моей строкой поиска. В этом случае ItemName устанавливается в ITEM3. В следующий раз я могу сказать, что это ITEM100. –

ответ

0

Я считаю, что вопрос, который вы задали, можно ответить, используя решение, предложенное here лишь с небольшими изменениями. Поскольку связанный ответ настолько тщателен, я не буду повторять ответ, но если по какой-то причине это не сработает, сообщите мне, и я могу предоставить некоторые альтернативы.

0

Не знаю, действительно ли я понимаю вопрос, но простой способ извлечения квадратных скобках значения заключается в следующем:

items = [] 
variables = [] 

with open('item.dat') as input_data: 
    for line in input_data: 
     line = line.strip() 
     if line and line[0] == '[' and line[-1] == ']': 
      variables.append(line) 
     else: 
      items.append(line) 

Печать двух списков с использованием данных, полученных результатов в:

variables = ['[ITEM1]', '[END]', '[ITEM3]', '[END]'] 
items = ['banana', 'peach', 'apple', 'orange', 'grapes', 'tennis', 'bowling'] 
1

Попробуйте это регулярное выражение:

^\[(?!END).*] 

Regex live here.

Разъяснение:

^\[   # starts with a '[' character 
(?!END)  # don't match 'END' 
.*]$   # take all till the end ']' character 

Надеется, что это помогает.

Смежные вопросы