我怎样才能读到以"#"开头的特定行?从python中的文件和 将该行设置为字典中的键(不包含"#")并将该行后的所有行设置为下一行"#"作为一个值是字典 请帮帮我 这是文件:
答案 0 :(得分:2)
from collections import defaultdict
key = 'NOKEY'
d = defaultdict(list)
with open('thefile.txt', 'r') as f:
for line in f:
if line.startswith('#'):
key = line.replace('#', '')
continue
d[key].append(line)
您的词典将在每个键下有一个行列表。以'#'
开头的第一行之前的所有行都将存储在键'NOKEY'
下。
答案 1 :(得分:0)
非常简单的版本
code
从(忽略其他空白行,答案格式的副产品):
在黎明之门的吹笛者
*路西法山姆....
sksdlkdfslkj
dkdkfjoiupoeri
lkdsjforinewonre
#A Chacerful of Secrets
*让它有
人们听到他说
产地:
{' #Phoper在黎明的大门上\ n' *' * Lucifer sam .... \ nsksdlkdfslkj \ ndkdkfjoiupoeri \ nlkdsjforinewonre \ n','#一点点秘密\ n':' *让他们听到他说\ n'}
答案 2 :(得分:0)
您可以使用Python的groupby
函数,如下所示:
from itertools import groupby
d = {}
key = ''
with open('input.txt', 'r') as f_input:
for k, g in groupby(f_input, key=lambda x: x[0] == '#'):
if k:
key = next(g).strip(' #\n')
else:
d[key] = ''.join(g)
print d
这会给你以下类型的输出:
{'The Piper at the gates of dawn': '*Lucifer sam....\nsksdlkdfslkj\ndkdkfjoiupoeri\nlkdsjforinewonre\n', 'A Saucerful of Secrets': '*Let there be\nPeople heard him say'}
使用Python 2.7.9进行测试