尾部格式化错误
Formatting Errors with tail
如何通过 tail
正确解析此文件而不出现格式错误?
我在 cygwin
中使用 tail
来解析两个文件的最后十行。一个文件正确解析,另一个文件在每个字符之间包含一个 space。
$ tail file2.txt -n 4
22/06/2015 12:28 - Decompressing and saving profile extract...
22/06/2015 12:28 - Decompressing and saving profile extract...
22/06/2015 12:38 - Decompressing and saving profile extract...
22/06/2015 12:38 - Decompressing and saving profile extract...
$ tail file1.txt -n 4
P a c k a g e s t a r t .
E l a p s e d t i m e : 5 0 . 1 7 5 7 5 4 8 s e c s .
. . . P a c k a g e E x e c u t e d .
R e s u l t : S u c c e s s
当我读取 python 中文件的原始内容时,我得到以下内容,我认为这是一大堆 unicode 字符
In [1]: open('file1.text', 'r').read()
Out[1]: '\xff\xfeP\x00a\x00c\x00k\x00a\x00g\x00e\x00 \x00s\x00t\x00a\x00r\x00t\x00.\x00\r\x00\n\x00E\x00l\x00a\x00p\x00s\x00e\x00d\x00 \x00t\x00i\x00m\x00e\x00:\x00 \x005\x000\x00.\x001\x007\x005\x007\x005\x004\x008\x00 \x00s\x00e\x00c\x00s\x00.\x00\r\x00\n\x00.\x00.\x00.\x00P\x00a\x00c\x00k\x00a\x00g\x00e\x00 \x00E\x00x\x00e\x00c\x00u\x00t\x00e\x00d\x00.\x00\r\x00\n\x00\r\x00\n\x00R\x00e\x00s\x00u\x00l\x00t\x00:\x00 \x00S\x00u\x00c\x00c\x00e\x00s\x00s\x00\r\x00\n\x00\r\x00\n\x00'
In [2]: print open('temp.txt', 'r').read()
■P a c k a g e s t a r t .
E l a p s e d t i m e : 5 0 . 1 7 5 7 5 4 8 s e c s .
. . . P a c k a g e E x e c u t e d .
R e s u l t : S u c c e s s
当我将 file1.txt
的全部内容复制到新文件 test.txt
时 - 问题不会再次发生。
$ tail test.txt
Package start.
Elapsed time: 50.1757548 secs.
...Package Executed.
Result: Success
文件似乎在每个字符和开头的 \xff
之间有字符 \x00
。
文件为UTF-16格式,大多数字符使用2个8位字节表示(部分字符使用4个8位字节)。 128 个 ASCII 字符中的每一个都表示为 2 个字节,一个零字节和一个包含实际字符值的字节。开头的 \xff\xfe
序列是一个字节顺序标记(BOM);表示剩余字符是先高位还是低位字节表示。
UTF-16 是表示 Unicode 文本的几种方式之一。它在 Microsoft Windows.
中最常用
我不确定为什么空字符显示为空格。这可能是由于您的终端仿真器的行为方式所致。
使用 iconv
命令将文件从 UTF-16 格式转换为其他格式。
如何通过 tail
正确解析此文件而不出现格式错误?
我在 cygwin
中使用 tail
来解析两个文件的最后十行。一个文件正确解析,另一个文件在每个字符之间包含一个 space。
$ tail file2.txt -n 4
22/06/2015 12:28 - Decompressing and saving profile extract...
22/06/2015 12:28 - Decompressing and saving profile extract...
22/06/2015 12:38 - Decompressing and saving profile extract...
22/06/2015 12:38 - Decompressing and saving profile extract...
$ tail file1.txt -n 4
P a c k a g e s t a r t .
E l a p s e d t i m e : 5 0 . 1 7 5 7 5 4 8 s e c s .
. . . P a c k a g e E x e c u t e d .
R e s u l t : S u c c e s s
当我读取 python 中文件的原始内容时,我得到以下内容,我认为这是一大堆 unicode 字符
In [1]: open('file1.text', 'r').read()
Out[1]: '\xff\xfeP\x00a\x00c\x00k\x00a\x00g\x00e\x00 \x00s\x00t\x00a\x00r\x00t\x00.\x00\r\x00\n\x00E\x00l\x00a\x00p\x00s\x00e\x00d\x00 \x00t\x00i\x00m\x00e\x00:\x00 \x005\x000\x00.\x001\x007\x005\x007\x005\x004\x008\x00 \x00s\x00e\x00c\x00s\x00.\x00\r\x00\n\x00.\x00.\x00.\x00P\x00a\x00c\x00k\x00a\x00g\x00e\x00 \x00E\x00x\x00e\x00c\x00u\x00t\x00e\x00d\x00.\x00\r\x00\n\x00\r\x00\n\x00R\x00e\x00s\x00u\x00l\x00t\x00:\x00 \x00S\x00u\x00c\x00c\x00e\x00s\x00s\x00\r\x00\n\x00\r\x00\n\x00'
In [2]: print open('temp.txt', 'r').read()
■P a c k a g e s t a r t .
E l a p s e d t i m e : 5 0 . 1 7 5 7 5 4 8 s e c s .
. . . P a c k a g e E x e c u t e d .
R e s u l t : S u c c e s s
当我将 file1.txt
的全部内容复制到新文件 test.txt
时 - 问题不会再次发生。
$ tail test.txt
Package start.
Elapsed time: 50.1757548 secs.
...Package Executed.
Result: Success
文件似乎在每个字符和开头的 \xff
之间有字符 \x00
。
文件为UTF-16格式,大多数字符使用2个8位字节表示(部分字符使用4个8位字节)。 128 个 ASCII 字符中的每一个都表示为 2 个字节,一个零字节和一个包含实际字符值的字节。开头的 \xff\xfe
序列是一个字节顺序标记(BOM);表示剩余字符是先高位还是低位字节表示。
UTF-16 是表示 Unicode 文本的几种方式之一。它在 Microsoft Windows.
中最常用我不确定为什么空字符显示为空格。这可能是由于您的终端仿真器的行为方式所致。
使用 iconv
命令将文件从 UTF-16 格式转换为其他格式。