2

我有两个 UTF-8 文本文件:

代表(文件1.txt):

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

代表(文件2.txt):

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

他们各自的Brat注解文件有如下注解:

文件 1.an:

T1  date 61 78  February 15, 2015

文件 2.an:

T1  date 53 67   July 25, 2014.

但是当我使用 python 使用上述偏移量从 .txt 中检索字符时,我得到:

file1.read()[61:78]:

February 15, 2015

file2.read()[53:67]:

ly 25, 2014. b

为什么我的抵消在第一种情况下有效,而在第二种情况下无效?

4

1 回答 1

0

问题在于回车(文本文件中的 \r)和换行符(\n)在 Windows 和 Unix/Mac 中被视为不同的方式。如果您使用 Windows 系统生成或修改 .txt 文件,将会有一些 '\r\n' 但 brat(Windows 不会考虑)只会计算 '\n' 符号。

dict使用 python,您可以在打开文件后使用 a 从 Windows 计数传递到 brat 计数,并使用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]]

于 2020-02-17T10:39:05.123 回答