Фильтрация текстового файла по заданным условиям и символам - Python - PullRequest
0 голосов
/ 04 октября 2018

У меня трудности с заданием.У меня есть несколько текстовых файлов и при чтении нескольких файлов в цикле это выглядит так:

@UTF8
@PID:   11312/c-00036109-1
@Begin
@Languages: eng
@Participants:  CHI Target_Child, EXA Investigator
@ID:    eng|ENNI|CHI|4;11.16|male|SLI||Target_Child|||
@ID:    eng|ENNI|EXA|||||Investigator|||
@Comment:   Birth of CHI is 9-MAY-1995
@Date:  25-APR-2000
@Tape Location: Disk L10 Track 3
@Bg:    A1
*CHI:   I saw a giraffe and a elephant .
%mor:   pro:sub|I v|see&PAST det:art|a n|giraffe coord|and det:art|a
    n|elephant .
%gra:   1|2|SUBJ 2|0|ROOT 3|4|DET 4|2|OBJ 5|4|CONJ 6|7|DET 7|5|COORD 8|2|PUNCT
*CHI:   <that> [/] (.) that (i)s it . [+ bch]
%mor:   pro:dem|that cop|be&3S pro:per|it .
%gra:   1|2|SUBJ 2|0|ROOT 3|2|PRED 4|2|PUNCT
*CHI:   I saw an elephant go swimming .
%mor:   pro:sub|I v|see&PAST det:art|a n|elephant v|go part|swim-PRESP .
%gra:   1|2|SUBJ 2|0|ROOT 3|4|DET 4|5|SUBJ 5|2|COMP 6|5|OBJ 7|2|PUNCT
*CHI:   <I saw eleph> [//] I saw the <g> [/] giraffe and the elephant <s>
    [//] drop ball in the pool .
%mor:   pro:sub|I v|see&PAST det:art|the n|giraffe coord|and det:art|the
    n|elephant n|drop n|ball prep|in det:art|the n|pool .
  • Предположим, у меня есть файлы, такие как SLI-1.txt, SLI2.txt ...SLI-10.txt.Первая задача - прочитать все файлы в один файл и выполнить с ним следующие действия.

  • Из этих данных я должен извлечь только те операторы, которые имеют префикс или начинаются с '* CHI:».(Обратите внимание, что некоторые операторы распространяются на следующую строку, вам следует убедиться, что вы их учитываете.) Ниже приведен список символов, которые следует отфильтровать из каждого извлеченного оператора '* CHI:'.

  • Удалите те слова, которые имеют либо «[» в качестве префикса, либо «]» в качестве суффикса, но сохраняют следующие три символа: [//], [/] и [*]
  • Сохранитьте слова, которые имеют «<» в качестве префикса или «>» в ​​качестве суффикса, но эти два символа должны быть удалены.
  • Удалите те слова, которые имеют префиксы '&' и '+'
  • Сохраните те слова, которые имеют либо '(' в качестве префикса, либо ')' в качестве суффикса, но эти два символадолжны быть удалены.

  • Подсказка: можно использовать регулярные выражения.

Спасибо заранее

1 Ответ

0 голосов
/ 04 октября 2018

Для выполнения фильтрации вы должны использовать Regular Expression Language, как указано в Hint.Вы можете сделать это на Python с помощью модуля re.Конечно, вам нужно узнать, что такое RegEx и как с ним работать.

Например, вы можете extract only statements which are ... с выражением ^(?P<start>\*CHI:)(?P<target>.*)(?P<end>(?P<end_type_1> \.$)|(?P<end_type_2>$\n%mor)) (флаги gmsU), где группа target содержит то, чтоВы хотите извлечь из файлов.Вы можете попробовать это онлайн - https://regex101.com/r/tLdj7t/3/.

...