【问题标题】:parsing a tagged file python解析标记文件python
【发布时间】:2021-07-30 12:13:40
【问题描述】:

我想将文本文件的内容导出到列表中,其中每条评论都是列表中的一个单独项目。

文件示例:

[开始] 你好,这是第 1 条评论。 aklsdfjkaldsfjasdfklasdflj [开始] 这是另一条评论。 adfkladsfkjlasjdf [开始] 这是另一个。

我该怎么做呢?我试过了:

  1. 将 [start] 的每个实例替换为 '\n[start]'

  2. 逐行循环字符串,创建一个新的“内容”变量。

  3. IF line.startswith('\n[start]') 如果内容变量不为空,则追加到名为“cmets”的列表

  4. 清空内容变量

  5. 将当前行追加到内容中

ELSE(即如果行不以 [start] 开头,而是同一注释的更多行):继续附加到“内容”

我希望上述方法可行,但存在以下问题:

  1. 将 [start] 的每个实例替换为 \nstart 后,在 pycharm 调试器模式下,我看不到它实际工作。
  2. 运行上述命令后,我的数组为空。

【问题讨论】:

    标签: python parsing text


    【解决方案1】:

    你想知道python是如何读取文件的:

    with open("file", "r") as the_file:
        for line in the_file:
            print(line.strip())
    

    使用上面的代码,您可以逐行读取文件并将其打印到控制台。

    现在您有 1 行或多行要按特定值拆分(在您的情况下为 [start]

    with open("file", "r") as the_file:
        list_of_contents = []
        for line in the_file:
            list_of_contents.extend(line.strip().split("[start]"))
        
        print(list_of_contents)
    

    用更pythonic的方式来实现同样的事情:

    with open("file", "r") as the_file:
        lines = the_file.readlines()
        list_of_contents = [*line.strip().split("[start]") for line in lines]
        print(list_of_contents)
    

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 2016-01-09
      • 2015-10-17
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      相关资源
      最近更新 更多