2017-03-03 110 views
2

我想逐行解析文本文档,并且这样做时我偶然发现了一些奇怪的行为,我认为这是由某种十字符号(☥)的存在引起的。我无法在这里复制真实的符号。 在我的代码中,我尝试确定每行的第一个字符中是否存在“+”符号。为了看看这个工作是否正常,我添加了一个包含布尔值和这个字符串的打印语句。在Python中打印格式化字符串的问题

我的代码的相关部分:

with open(file_path) as input_file: 
    content = input_file.readlines() 
    for line in content: 
     plus = '+' in line[0:2] 
     print('Plus: {0}, line: {1}'.format(plus,line)) 

的文件,我可以尝试解析:

+------------------------------ 
row 1 with some content 
+------+------+-------+------- 
☥+------+------+-------+------ 
| col 1 | col 2 | col 3 ... 
+------+------+-------+------- 
|_ valu | val | | dsf |.. 
|_ valu | valu | ... 

我得到的输出:

加:真,行:+ ------------------------------

Plus:False,line:诚然,行:一些内容

加排1 + ------ + ------ + ------- ------- +

♀ + ------ + ------ + ------- + ------

Plus:False,line:| col 1 | col 2 |第3栏第...

加:真,行:+ ------ + ------ + ------- ------- +

加:假,行:| _val | val | | dsf | ..

Plus:False,line:| _value | valu | ...

所以我的问题是为什么它只是打印包含符号而没有'Plus:True/False'的行。我应该如何解决这个问题? 谢谢。

+1

我只是试图用相同的输入行序列重现这一点,并没有得到任何重复的行。 – khelwood

+1

也许你的行有一个'\ r'字符。尝试打印他们的'repr'版本。 – khelwood

+0

嗯我不得不在这里插入一个unicode符号,因为我似乎无法复制真正的符号。 – spijs

回答

1

你看到的是性别符号。它来自original IBM PC character set,编码为0x0c,又名FormFeed,又名Ctrl-L

如果您使用这些解析文本数据,它们可能被插入以指示打印机开始新页面。

wikipedia

换页是页破ASCII控制字符。它强制打印机弹出当前页面并继续在另一页面的顶部打印。通常,它也会导致回车。换页字符代码被定义为12(十六进制的0xC),并可以表示为control + L或^ L。