如何读取包含 BOM 和 CRLF 的文本文件?

cod*_*ter 0 python io byte-order-mark file

我有一堆文本文件,其中包含字节顺序标记 (BOM),并且它们还具有 CRLF (\r\n) 结尾来标记行尾。例如,这是八进制转储片段:

$ od -bc P21_T_3-28-2022.txt
0000000   357 273 277 163 164 141 147 145 040 061 015 012 120 154 141 171
         357 273 277   s   t   a   g   e       1  \r  \n   P   l   a   y
0000020   151 156 147 040 164 150 145 163 145 040 164 167 157 040 147 141
           i   n   g       t   h   e   s   e       t   w   o       g   a
0000040   155 145 163 054 040 162 145 155 151 156 144 145 144 040 155 145
           m   e   s   ,       r   e   m   i   n   d   e   d       m   e
0000060   040 157 146 040 164 151 155 145 163 040 164 150 141 164 040 111
               o   f       t   i   m   e   s       t   h   a   t       I
<snip>
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码来读取文件:

lines = open(file, "r", encoding='utf-8').read().splitlines()
print(lines[0])
Run Code Online (Sandbox Code Playgroud)

第一行打印如下,没有 CRLF:

'\ufeffstage 1'
Run Code Online (Sandbox Code Playgroud)

读取时如何去掉BOM字符?

小智 5

也许您需要指定encodingutf-8-sig

lines = open(file, "r", encoding='utf-8-sig').read().splitlines()
print(lines[0])
Run Code Online (Sandbox Code Playgroud)