当前位置: 首页 > 面试题库 >

使用python提取文本文件中两个字符串之间的值

岑毅庵
2023-03-14
问题内容

可以说我有一个包含以下内容的文本文件

fdsjhgjhg
fdshkjhk
Start
Good Morning
Hello World
End
dashjkhjk
dsfjkhk

现在,我需要编写一个Python代码,该代码将读取文本文件并将内容在“开始”和“结束”之间复制到另一个文件。

我写了下面的代码。

inFile = open("data.txt")
outFile = open("result.txt", "w")
buffer = []
keepCurrentSet = True
for line in inFile:
    buffer.append(line)
    if line.startswith("Start"):
        #---- starts a new data set
        if keepCurrentSet:
            outFile.write("".join(buffer))
        #now reset our state
        keepCurrentSet = False
        buffer = []
    elif line.startswith("End"):
        keepCurrentSet = True
inFile.close()
outFile.close()

我没有获得预期的期望输出,只是开始了。我想要得到的是开始和结束之间的所有界限。不包括开始和结束。


问题答案:

万一您的文本文件中有多个“开始”和“结束”,这会将所有数据一起导入,不包括所有“开始”和“结束”。

with open('path/to/input') as infile, open('path/to/output', 'w') as outfile:
    copy = False
    for line in infile:
        if line.strip() == "Start":
            copy = True
            continue
        elif line.strip() == "End":
            copy = False
            continue
        elif copy:
            outfile.write(line)


 类似资料:
  • 问题内容: 我有以下格式的文本文件: 我想提取.txt文件中DELIMITER1和DELIMITER2之间的每个s块 这是我当前的无效代码: 有任何想法吗? 问题答案: 您可以使用简化这一个正则表达式中,DOTALL标志。 这也利用了非贪婪运算符,因此将找到多个DELIMITER1-DELIMITER2对的非重叠块。

  • 问题内容: 我尝试获取<%=和%>之间的字符串,这是我的实现: 它返回 但我的期望是: 我在哪里错了以及如何纠正它? 问题答案: 您的模式很好。但是,您不应该轻信它,应该这样做。以下代码提供了您正在寻找的输出:

  • 问题内容: 我有一个像下面这样的文字 [:de] 15岁的BB2女士在holzbauweise的rkische Gulet的眉毛,Annehmlichkeiten的游艇和Eleganz einer的专业游艇,durch的高品质的盲人眉毛,glichen Holzverare的时尚和15岁的女孩密西西比州杜尚卡宾/ WC。Salon and Deck sind ausgesprochen gro脽z

  • 问题内容: 我有一个字符串: (它的输出超过两行,因此其中必须有一个\ n。 我希望提取标签之间的字符串。在这种情况下,它是7月28日,但是可能是另一个日期或其他某个数字。 1)从字体标签之间提取值的最佳方法是什么?我本以为可以提取和之间的所有内容。 编辑:第二个问题删除。 问题答案: 尽管可以使用正则表达式解析任意HTML,但这通常是一个死亡陷阱。有很多很棒的用于解析HTML的工具,包括Beau

  • 问题内容: 假设我有一个字符串,而我只想提取一部分。 我只知道我感兴趣的部分之前和之后的几个字符1234。 使用字符串可以执行以下操作: 结果,这会给我。 如何在Python中做同样的事情? 问题答案: 使用正则表达式- 文档以供进一步参考 要么:

  • 问题内容: 我有一个像 “ ABC [这是为了提取]” 我想提取Java中的部分。我正在尝试使用split,但是它不能按我想要的方式工作。有人有建议吗? 问题答案: 如果您的字符串中只有一对方括号(),则可以使用: