python在新行中打印每个字符

python printing each character in new line

我试图打印行并替换文本/html文件行中的单词,但不能这样做,因为python(2.7)正在逐字符地读取它。我做错什么了?

下面是代码和输出:

1
2
3
4
5
6
import sys

infile = open('filenmae').read()

for line in infile:
    print line

我应该得到的输出(这里只显示第一行):

1
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN">

我得到的输出:

1
2
3
4
5
6
7
8
9
10
11
12
<
!
D
O
C
T
Y
P
E
.
.
.


您正在一个字符串上循环,该字符串生成单个字符。

不要一次读取文件,只需循环文件对象:

1
2
3
with open('filename') as infile:
    for line in infile:
        print line

我在这里也将该文件用作上下文管理器(with open(..) as localname;当with块退出时,python现在将自动为您关闭该文件。

在文件对象上循环可以根据需要读取行,避免将整个文件读取到内存中。

其他替代方法是使用file.readlines()方法将文件作为单独的行一次性读取:

1
infile = open('filename').readlines()

或者用str.splitlines()分割读取的数据:

1
infile = open('filename').read().splitlines()


您应该尝试使用file.readlines(),而不是如下所示:

1
2
3
infile = open('filename').readlines()
for line in infile:
    print line

这将循环文件中的每一行,而不是每一个字符。

Output: