LINUX.ORG.RU

Скрипт подмены в тексте


0

1

Имеются 2 текстовых файла. Первый фомата

1.  CS Care din urmatoarele caractere se gasesc în hernia inghinala directa:
A. Nu coboara niciodata în scrot 
B. Este congenitala
C. Este mai fregvent unilaterala
D. Se stranguleaza foarte frecvent
E. Este o hernie de efort 
2. CS Strangularea diverticulului Meckel poarta denumirea de hernie:
A. Riсhter
B. Maydl
C. Littre 
D. Gheselbah
E. Broсk 
и так далее.

Второй собственно

1.        ac		
2.        acde
Необходимо сделать следующее по соответстии номера поставить (*) перед соответствующей буквой. Т.е должно получиться следующее:
1.  CS Care din urmatoarele caractere se gasesc în hernia inghinala directa:
(*)A. Nu coboara niciodata în scrot 
B. Este congenitala
(*)C. Este mai fregvent unilaterala
D. Se stranguleaza foarte frecvent
E. Este o hernie de efort 
2. CS Strangularea diverticulului Meckel poarta denumirea de hernie:
(*)A. Riсhter
B. Maydl
(*)C. Littre 
(*)D. Gheselbah
(*)E. Broсk 
И в идиале вставить пробел перед номерами, но это не обязательно.

Можно awk: сразу загоняем второй файл в массив по строкам [«ac», «acde» ..].

/^[0-9]/ -> сохраняем n

/^[A-Z]/ -> n-ая строка содержит сей символ? вставляем "(*)"

anonymous
()

Non-failproof

#!/usr/bin/python
import re

datafile = open("data", 'r')
data = {}
for line in datafile:
    m = re.match(r'([0-9]+). *([a-z]+)', line.strip());
    if m:
        number, letters = m.groups()
        data[number] = letters

bulletlist = open("list", 'r')

current = ''
for line in bulletlist:
    if line.strip():
        bullet = line.split()[0].strip('.')
        if bullet.isdigit():
            current = bullet
            print ' ' + line.strip()
        elif bullet.isalpha() and bullet[0].upper() in data[current].upper():
            print '(*)' + line.strip()
        else:
            print line.strip()
schizoid ★★★
()
Ответ на: Non-failproof от schizoid

Да, спасибо большое, вроде сработало.

darth-nerd
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.