为了账号安全,请及时绑定邮箱和手机立即绑定

如何在txt文件的特定位置放置换行符?

如何在txt文件的特定位置放置换行符?

繁花不似锦 2024-01-04 17:21:25
我有一个 .txt 文件,其中包含我研究所需的大量文本信息。因此,我正在尝试编写一个进行关键字搜索的程序(在我的例子中,我需要短语“sold salt”),之后它将以该短语开头的文本逐行写入新文件并剪切在某个时候关闭(我还没有决定)。它实际上是一本包含 17 世纪数字化文档的书,用古俄语写成,但示意性文本如下所示:“表_No.1文字文字文字文字文字文字文本文本文字文字文字文字文字文字文字售盐文字文字文字文字文字文字售盐文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字sheet_1_reverse文本文本出售盐文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本所以这是一个非常糟糕的结构,我想要的是将所有盐销售记录及其在整个文本中的位置放在一个文件中以供我的研究。现在,很抱歉做了很长的介绍,我只是想展示我必须处理的事情。我尝试使用 docx lib 编写代码,但事实证明,唯一可行的方法是在 docx 文件中下划线所需的信息,然后使用代码将其取出,这并不是很糟糕,但它还需要时间。所以我停止了 txt 格式,现在我得到了这个:key_1 = 'sold'key_2 = 'salt'f_old = open("text.txt", encoding='utf-8')f_result = open("text_result.txt", 'w', encoding='utf-8')for line in f_old:    line = line.split()    if len(line) == 1:        for elem in range(len(line)):            f_result.write(line[elem] + '\n')
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

因此,根据您提供的信息,我想当您看到另一个时,您想停止写作sold salt,然后从那里继续写作。这意味着在写入时,您只需要进行另一次检查(就像您已经做的那样),以确保要写入新文件的单词不是sold salt,如果是,则从那里中断。它看起来像这样:


for line in f_old:

    line_words = line.split()  # it is confusing changing the value of a variable within the

    # loop, so I would recommend simply creating a new variable

    if len(line_words) == 1:

        # there was no need for a for loop here as we already know that there is only one element

        f_result.write(line_words[0] + '\n')

    else:

        for word in range(len(line_words)-1):  # as you will be accessing word+1 element,

        # you need to look out for out of range indices

            if line_words[word] == key_1 and line_words[word + 1] == key_2:

                for i in range(len(line_words[word: word + 10]))):

                    if i != 0 and line_words[word+i] == key_1 and line_words[word+i+1] == key_2:

                        break


                    f_result.write(line_words[word+i] + ' ')

                f_result.write('\n')



f_result.close()

我还建议使用枚举,然后仅使用索引来访问您需要的元素后面的元素,我认为它提供了更清晰的代码。


查看完整回答
反对 回复 2024-01-04
  • 1 回答
  • 0 关注
  • 59 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信