从 #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']
我想读取、解析 .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']