【问题标题】:Splitting a htm file into separate lines in python在python中将htm文件拆分为单独的行
【发布时间】:2013-05-19 07:08:54
【问题描述】:

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

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

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

for line in html:
    print(line)

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

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

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

【问题讨论】:

    标签: python file input split


    【解决方案1】:

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

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

    html = open('try.htm').read().splitlines()
    for line in html:
        print("Line:")
        print(line)
        print()
    

    【讨论】:

    • 对不起,也许我没有说清楚。程序打印所有行。但它会立即打印它们,而不是我想要的逐行打印。
    • 你能把你的输入文件上传到某个地方吗?也许这就是问题所在。或者我误解了你所说的“逐行”的意思。
    • 我不知道在哪里上传...但它来自此链接的页面来源:osvdb.org/show/osvdb/93456
    • 是的,这就是我想要的。你能把你的确切代码贴在这里吗?
    • 嗯......奇怪的是我仍然得到我的原始输出......你的代码没有变化。 'Line:' 被打印出来,然后整个源文件一次被打印出来,最后 '()' 被打印出来。我能知道你用的是什么版本的python吗?
    【解决方案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
    

    【讨论】:

    • 所以我尝试了 readlines() 但它是一样的....所有内容仍然一次打印出来,这表明文件输入没有被分成不同的行...顺便说一句,你是什么编码假设我试试?
    • 最有可能检查的编码是“Windows-1252”或“Latin-1”,但老实说,我不确定这是否真的是问题所在。尝试进入 Python 调试器并运行:>> f = open('filename.htm'),然后尝试不同的 .decode('encoding') 调用,看看是否得到更好的输出。
    【解决方案3】:

    file.readlines([sizehint]) 呢?

    【讨论】:

      【解决方案4】:

      您需要readlines() 而不是splitlines()。您的代码如下所示

      all_lines = open('sample.html').readlines()
      
      for line in all_lines:
          print(line)
      

      要存储为列表,您可以这样做

      lst = list(open('sample.html').readlines())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-07
        • 2019-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-24
        • 2020-01-12
        相关资源
        最近更新 更多