打印字符串中的"u202f"在哪里?



我有一个文件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)行)。

最新更新