2015-08-26 2 views
0

входного файла:нечеткой строка Раскол в Python 2.x

rep_origin  607..1720 
        /label=Rep 
    Region   2643..5020 
        /label="region" 
        extra_info and stuff 

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

Желаемая Выход:

['rep_origin  607..1720  /label=Rep', 'Region   2643..5020      /label="region"       extra_info and stuff'] 

Я пытался расщеплению на «», но это дало мне некоторые сумасшедшие вещи. Если бы я мог добавить «нечеткий» поисковый запрос в конце, который включает в себя все символы алфавита, но НЕ пробелы. Это решило бы проблему. Я полагаю, вы можете сделать это с помощью регулярного выражения с чем-то вроде «[A-Z]», но я не был уверен, был ли более сложный способ.

Есть ли способ добавить «нечеткий» поисковый запрос в самом конце идентификатора string.split? (т.е. original_string.' [alphabet_character]'

+0

'String.Split()' расщепляется на точной строке. Однако вы, возможно, смогут использовать регулярные выражения [] (https://docs.python.org/3/ library/re.html? highlight = re.split # re.split), чтобы определить, какой шаблон для разделения. – dsh

+0

Не могли бы вы просто s.split(), а затем подключить 3 последовательных эл? – taesu

ответ

1

Я не уверен, что именно вы ищете, но parse ниже функция принимает текст из вашего вопроса и возвращает список разделов и раздел представляет собой список строк из каждой секции (с начальным и конечными пробелами удаляется).

#!/usr/bin/env python 

import re 


# This is the input from your question 
INPUT_TEXT = '''\ 
    rep_origin  607..1720 
        /label=Rep 
    Region   2643..5020 
        /label="region" 
        extra_info and stuff''' 


# A regular expression that matches the start of a section. A section 
# start is a line that has 4 spaces before the first non-space 
# character. 
match_section_start = re.compile(r'^ [^ ]').match 


def parse(text): 
    sections = [] 
    section_lines = None 

    def append_section_if_lines(): 
     if section_lines: 
      sections.append(section_lines) 

    for line in text.split('\n'): 
     if match_section_start(line): 
      # We've found the start of a new section. Unless this is 
      # the first section, save the previous section. 
      append_section_if_lines() 
      section_lines = [] 
     section_lines.append(line.strip()) 

    # Save the last section. 
    append_section_if_lines() 

    return sections 


sections = parse(INPUT_TEXT) 
print(sections) 

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

  • Нет связанных вопросов^_^