我有一个文件test.tsv包含特殊符号"u202f">:特殊符号
当我写一个python脚本来读取这个文件时,发现.readline(),读取该符号,并且.read()无法读取当我打印lines1[0]," u202f">消失了。
为什么?
代码:
ff = "test.tsv"
lines1 = open(ff, encoding='utf-8').readlines()
str1 = open(ff, encoding='utf-8').read()
print("lines1:", lines1)
print("lines1[0]:", lines1[0])
print("str1:", str1)
输出:
lines1: ['assume Fourbooksu202f è una piattaforman']
lines1[0]: assume Fourbooks è una piattaforma
str1: assume Fourbooks è una piattaforma
首先readline()
和read()
都在读取您的特殊字符。
readline()
读取每一行,因为它存在于文件中,并将其追加到列表中,另一方面,read()
读取文件的所有内容,并将其保存为字符串。
如果您仔细查看您的输出,您会注意到,在打印lines1
时,您得到的u202f
只是作为文本而不是作为求值。但是当你打印lines1[0]
和str1
的时候,你的特殊字符被打印出来了,但是这次它的值被计算了,它是一个空格。
输出差异背后的实际原因是,正如MZ
评论中提到的那样,正在调用__repr__
函数(通过列表,在print(lines1)
行),而在另一方面,正在调用__str__
函数(由str对象本身,在print(lines1[0])
和print(str1)
行)。