Смещение символов в файле аннотации Brat через python

У меня есть два текстовых файла UTF-8:

магнезии (file1.txt):

\nSTATEMENT OF WORK\n\n\nSTATEMENT OF WORK NO. 7\nEffective Date: February 15, 2015

магнезии (file2.txt):

RENEWAL/AMENDMENT\n\nTHIS agreement is entered as of July 25, 2014. b

Их соответствующие файлы аннотаций Brat имеют следующую аннотацию:

file1.ann:

T1  date 61 78  February 15, 2015

file2.ann:

T1  date 53 67   July 25, 2014.

Но когда я использую python для извлечения символов из.txt с использованием вышеуказанных смещений, я получаю:

file1.read () [61:78]:

February 15, 2015

file2.read () [53:67]:

ly 25, 2014. b

Почему смещение работает в первом случае, а не во втором?

0 ответов

Проблема возникает из-за того, что символы возврата каретки (\r в текстовом файле) и новой строки (\n) не рассматриваются одинаково в Windows и Unix/Mac. Если вы используете систему Windows для создания или изменения файлов.txt, там будет несколько символов '\ r \ n', но brat (это не относится к Windows) будет считать только знак '\ n'.

Используя python, вы можете перейти от подсчета Windows к подсчету brat, используя dict после открытия файла с аргументом newline='' это гарантирует, что '\ r' будет присутствовать в созданном W_Contents переменная:

with open('file.txt', newline='', encoding='utf-8') as f:
    W_Content = f.read()

counter = -1
UfromW_dic = {}
for n, char in enumerate(W_Content):
    if char != '\r':
        counter += 1
        UfromW_dic[n] = counter

После этого начальный промежуток [x,y] можно будет найти на [UfromW_dic[x],UfromW_dic[y]].

Другие вопросы по тегам