python如何读取文件并将部分存储到单独的列表中

我有一个如下所示的keyword.txt文件:

    #section1
    keyword1
    keyword2
    ......
    #section2
    keyword3
    keyword4
    ......
    #section3
    keyword5
    keyword6
    ......

每个部分中都有很多关键字,并且有很多细分。我的问题是: 如何将每个部分提取到单独的列表中,如下所示:

    section1=["keyword1","keyword2"]
    section2=["keyword3","keyword4"]
    ......

这就是我要做的,以提取分隔符“#”的行号

separator_numlist=[]
with open("keywords.txt") as f:
    for num,line in enumerate(f):
        if('#') in line:
            separator_numlist.append()
"""
Then read lines between each separator's line number
"""

有更好的解决方案吗? 另外,我正在考虑将这些关键字存储在XML或json中,也许从结构化文件中读取节比从txt文件中读取节更有效率。

nmhanq 回答:python如何读取文件并将部分存储到单独的列表中

您可以使用dict:

dic = dict()
with open('output','r') as f:
    for i in f.readlines():
        if i.startswith('#'):
            my_key = i.replace("#","")
            dic_key = my_key.strip()
        else:
            if dic_key in dic:
                dic[dic_key] += [i.strip()]
            else:
                dic[dic_key] = [i.strip()]

输出:

{'section1': ['keyword1','keyword2'],'section2': ['keyword3','keyword4'],'section3': ['keyword5','keyword6']}

您还可以导入json并使用它进行转换:

json_output = json.dumps(dic)
,

像LinPy一样,我也会建议一个字典:

with open( "split.txt" ) as fpntr:
    data = fpntr.read()

out = {
    y[0] : y[1::] for y in [ x.split() for x in data.split('#') if x] 
    }

print out

给予

{'section3': ['keyword5','keyword6'],'section1': ['keyword1','keyword2']}

if x可以消除空刺。

本文链接:https://www.f2er.com/3161612.html

大家都在问