从文本文件打印文本会导致Python 2中出现不必要的空格?

时间:2017-06-30 02:47:40

标签: python

我正在尝试使用IDLE和Python 2将文本文件中的每一行打印到控制台中。

with open("Stats_test.txt") as f:
    for line in f:
        print line

当我运行此文件时,文件中的文本打印出来,每个字符之间有一个空格。我很困惑我能做些什么来解决它

文本文件中的文字

21/09/2014, 16:14 - Salim: How do you do it???
21/09/2014, 16:15 - Salim: <Media omitted>
21/09/2014, 16:15 - Olive: Do what!?!
21/09/2014, 16:16 - Olive: Jackie Chan!?!
21/09/2014, 16:16 - Olive: Do u know Jackie Chan can sing
21/09/2014, 16:16 - Salim: The math prob
21/09/2014, 16:16 - Salim: #funfact
21/09/2014, 16:17 - Salim: The math thing is unpossible
21/09/2014, 16:18 - Olive: Jo
21/09/2014, 16:18 - Olive: Jus like the word unpossible being in the dictionary
21/09/2014, 16:18 - Salim: Depends on where you get your dictionary from
30/09/2015, 22:27 - Salim: Like student tutors
30/09/2015, 22:27 - Salim: Duke of edinburgh
30/09/2015, 22:27 - Olive: Hahaha
30/09/2015, 22:27 - Olive: So who do u hang around with!?
30/09/2015, 22:28 - Salim: A korean
A Swedish 
An American 
An Austrian
30/09/2015, 22:28 - Olive: 
30/09/2015, 22:28 - Olive: I guess they have names
30/09/2015, 22:28 - Olive: But thts better than jus names
30/09/2015, 22:29 - Olive: I mostly have all indians
30/09/2015, 22:29 - Salim: It's diyafah
30/09/2015, 22:29 - Salim: And indians
30/09/2015, 22:29 - Olive: Lol yeah
30/09/2015, 22:29 - Salim: Oh and the swearing

虽然在控制台中打印出这样的内容。 Picture

我认为这是由于Unicode编码,有人可以确认吗? 如果是这样,我如何在不丢失Unicode的情况下删除冗余空间,因为如果我使用ANSI则会丢失一些文本和数据。

2 个答案:

答案 0 :(得分:0)

您的输入文件是unicode。从表情符号可以看出这一点。但是你的程序不知道这个并且正在将输入解释为字节。

这个问题在Character reading from file in Python处得到答案 但是在你的程序工作之前,你必须决定你想要做什么关于表情符号。

print语句自动尝试将unicode字符串编码为ascii,这将失败,因为表情符号不是ascii。

答案 1 :(得分:-1)

当你读到这样的行时,它们总是以\n结束,这是换行符。当您print向线路添加另一个\n时,会导致双倍间距。您需要删除其中一个,如下所示:

with open("Stats_test.txt") as f:
    for line in f:
        print line.rstrip()