在Python

时间:2017-02-08 18:28:33

标签: python python-3.x unicode

我正在使用Python 3.6.0编写脚本,将输出从米转换为xlsx文件。在输入文件的末尾是一个→符号,表示文件的结尾。

当我检测到→符号时,我想特别跳过当前行。 (我可以在转换之前将多个文件附加在一起,因此有多个→符号表示原始文件的末尾。)

Notepad ++将格式检测为 UTF-8 ANSI,但我无法在Python代码中获取if语句来检测箭头。 →也清楚地显示在普通的旧记事本中。

我最近的迭代是这次尝试:

elif '\u+2192' in line:

未能检测到右箭头。以这种方式尝试同样的事情:

elif '→' in line:

如何检测这一个角色?

编辑:重要的是,我读的文件是.log文件。

编辑:更多代码/数据以帮助排除故障。

以下是我的日志文件末尾的代码段:

TIM= 15:24:47
TODAY -0.0687869 m3
→

***注意:当我从记事本中复制并粘贴文本时,它不会粘贴箭头。

以下是我如何阅读文件的行:

with open(datafile, 'r') as df:
    for line in df: 

2 个答案:

答案 0 :(得分:2)

'\u2192'而不是'\u+2192'。还要记得指定正确的编码。

您还可以使用\x\U\N,例如'\N{RIGHTWARDS ARROW}'

根据PEP8:

  

在标准库中,非默认编码应仅用于   测试目的或当评论或文档字符串需要提及时   包含非ASCII字符的作者姓名;否则,使用\ x,   \ u,\ U或\ N转义是包含非ASCII数据的首选方式   在字符串文字中。

答案 1 :(得分:1)

右箭头实际上是一个控件-Z,如Code Page 437所示。出于历史原因,Control-Z被许多Windows程序接受为文本文件的文件结束标记。如果你寻找角色\x1a,你会找到它。

如果在文本模式下打开文件,它应该自动删除该字符。