从 #1comment 到 #2nd comment 逐行读取文件

Reading file line by line from #1comment till #2nd comment

我想读取、解析 .txt 文件并将其保存在变量中。在第一个评论#a 到#~~ 结束之后到变量 a 然后为 var b:在评论 #b 之后阅读直到评论 #~~ 等等。

#a
  60   8   10
  12  30   12
#~~
#b  
14 2
30 12
#~~
#c
 40 14 

with open("file.txt") as f:
    for line in f:
         li = line.strip()
         if li.startswith("#a"):
    

我可能只是将整个文件读入 Python,然后使用 re.findall 查找所有评论:

inp = """#a
  60   8   10
  12  30   12
#~~
#b  
14 2
30 12
#~~
#c
 40 14
#~~"""

matches = re.findall('#(\w+)\s+(.*?)#~~\s*', inp, flags=re.DOTALL)
print(matches)

这会打印:

[('a', '60   8   10\n  12  30   12\n'), ('b', '14 2\n30 12\n'), ('c', '40 14\n')]

代替我上面的硬编码数据,使用以下内容从您的实际文件中读取:

file = open("file.txt")
inp = file.read()
file.close()

编辑:

如果只想保留评论数据本身,而不是标签,则通过推导将二维列表缩减为一维列表:

matches = re.findall('#(\w+)\s+(.*?)#~~\s*', inp, flags=re.DOTALL)
output = [j for (i, j) in matches]
print(output)

这会打印:

['60   8   10\n  12  30   12\n', '14 2\n30 12\n', '40 14\n']