1

所以我有一个 .htm 文件,我需要将它分成不同的行并存储在一个列表中。所以我用于此的代码如下。

html = open('filename.htm').read().splitlines()

但是,当我执行以下操作时,整个文件会立即打印出来,而不是逐行打印,因此文件的输入似乎没有被分成不同的行

for line in html:
    print(line)

此外,当我尝试将文件的内容复制粘贴到程序时,它工作正常。

html = raw_input()
html = html.splitlines()

谁能告诉我如何将文件中的输入拆分为不同的行?谢谢。

4

4 回答 4

3

由于for line in html: print(line)意味着打印所有行,它显然打印整个文件,一次打印一行。

因此,除非您将文件“合并”在一行文本中,否则它可以正常工作。您可以添加一些文本输出来确定它:

html = open('try.htm').read().splitlines()
for line in html:
    print("Line:")
    print(line)
    print()
于 2013-05-19T07:12:49.950 回答
2

您不希望read()在第一次通话中参与其中。尝试这个:

htmllines = open('filename.htm').readlines()
for line in html:
    print line

如果您的 HTML 文件肯定位于多行而不是像 Dek 建议的那样仅一行,那么请确保您的文件具有正确的编码 - 您可能需要按如下方式解码:

htmllines = open('filename.htm').read().decode("Some Encoding").splitlines()
for line in html:
    print line
于 2013-05-19T07:13:40.233 回答
0

你需要readlines()而不是splitlines()。你的代码如下

all_lines = open('sample.html').readlines()

for line in all_lines:
    print(line)

要存储为列表,您可以执行

lst = list(open('sample.html').readlines())
于 2013-05-19T13:50:52.607 回答
0

怎么样file.readlines([sizehint])

于 2013-05-19T07:14:19.580 回答