Python逐个字符换行输出

2 投票
2 回答
10039 浏览
提问于 2025-04-17 23:58

我想在一个文本或HTML文件中打印行并替换行中的单词,但我做不到,因为Python(2.7)是一个字符一个字符地读取文件。我哪里做错了呢?

这是我的代码和输出:

import sys

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

for line in infile:
    print line

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

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

我实际得到的输出:

<
!
D
O
C
T
Y
P
E
.
.
.

2 个回答

10

你正在遍历一个字符串,这样可以一个一个地获取字符。

不要一次性读取整个文件,而是直接遍历文件对象:

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

我在这里也用了上下文管理器来处理文件(with open(..) as localname);这样,Python会在你离开with块时自动关闭文件。

遍历文件对象时,会根据需要读取行,这样就避免了一次性把整个文件都读到内存里。

另外一种方法是使用file.readlines()方法,一次性读取文件的所有行:

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

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

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

你可以试试用 file.readlines(),像下面这样:

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

这个方法会逐行读取文件,而不是一个一个字符地读取。

输出: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

撰写回答