【问题标题】:How to search and store specific part of text in txt files如何在txt文件中搜索和存储文本的特定部分
【发布时间】:2019-02-23 19:18:49
【问题描述】:

我正在编写一个脚本,我可以在其中搜索 txt 文件中的特定文本,然后将其写入另一个 txt 文件。我使用两个文件名。文件“in.txt”包含具有开始和结束标记的不同文本部分。起始标记是一个变量:例如“^1”、“^2”或“^3”。结束标记始终是相同的字符“^”)。 我的意图是编写一个代码,可以在“in.txt”中搜索指定变量(例如:“^ 3”),该变量用作开始标记,并从该点读取所有行,直到我到达结束标记(我定义为“^”)。 此后我想将这些行写入文件“out.txt” 我是 pyhton 的新手,我必须学习很多东西。 直到现在我用谷歌搜索但没有找到我使用的解决方案。我只找到了非常复杂的解决方案,但没有一个给我建议来解决我的问题(使用开始和结束标记进行搜索)。

到目前为止,我的代码是:

with open (f1, encoding = "utf8", errors = "ignore") as f:
    lines = f.readlines ()
    lines = [l for l in lines if "^ 3" in l]
    with open (f2, "w") as f1:
        f1.writelines (lines)

我只在文件“out.txt”中得到“^ 3”。而已。也不是以下几行。而且我还没有弄清楚如何在搜索行中对“结束标记”进行编码。 请帮帮我!我很感激来自更有经验的用户的每一个提示,这些提示可以帮助我进一步提高我的编码能力。谢谢!

【问题讨论】:

  • 你能显示一个示例输入吗,可能是 3 行

标签: python python-3.x


【解决方案1】:

我不确定你做错了什么,但这对我来说很好。可能是你重用了你的变量linesf1

 with open('in.txt', 'r') as f:
     lines = f.readlines()   
     lin = [i for i in lines if '^ 3' in i]              
     with open('out.txt', 'w') as f1:
         f1.write(str(lin))

【讨论】:

    【解决方案2】:

    这是我的“in.txt”文件的格式。

    ^ 0 这是文本第 0 部分。Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Donec purus nunc,auctor eu dignissim sed,lacinia eu urna。在 laoreet, nisl sed interdum tempus, odio ^ ^ 1 这是文本第 1 部分。Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Donec purus nunc,auctor eu dignissim sed,lacinia eu urna。在 laoreet,nisl sed interdum tempus,odio ^ ^ 2 这是文本第 2 部分。Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Donec purus nunc,auctor eu dignissim sed,lacinia eu urna。在 laoreet,nisl sed interdum tempus,odio ^ ^ 3 这是文本第 3 部分。Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Donec purus nunc,auctor eu dignissim sed,lacinia eu urna。在 laoreet, nisl sed interdum tempus, odio ^ ..................... ..................... ..................... ^ 33 这是文本第 33 部分。Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Donec purus nunc,auctor eu dignissim sed,lacinia eu urna。在 laoreet, nisl sed interdum tempus, odio ^ 当我运行代码时,我进入“out.txt”

    ['* 3\n', '* 33\n']

    就是这样。所以这不是获得我想要的结果的方法。当我想要开始变量之后的文本时:“^ 3”我想获取文本:

    这是文本第 3 部分。Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Donec purus nunc,auctor eu dignissim sed,lacinia eu urna。在 laoreet,nisl sed interdum tempus,odio

    你知道这个问题的解决方法吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 2019-11-16
      • 2021-04-01
      • 1970-01-01
      相关资源
      最近更新 更多