Смещение символов в файле аннотации 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]]
.