如何将此文本文件转换为字典?

nyw*_*nyw 4 python dictionary

我有一个f看起来像这样的文件:

#labelA
there
is
something
here
#label_Bbb
here
aswell
...
Run Code Online (Sandbox Code Playgroud)

它可以在一行上有许多标签和任意数量的元素(仅限str),每行标签可以有多行.我想将这些数据存储在如下字典中:

d = {'labelA': 'thereissomethinghere', 'label_Bbb': 'hereaswell', ...}
Run Code Online (Sandbox Code Playgroud)

我有一些子问题:

  1. 如何使用#字符以了解新条目何时到位?
  2. 如何删除它并保留以下内容直到行结束?
  3. 如何才能在新行上追加每个字符串,直到#再次弹出.
  4. 文件结束后如何停止?

Hai*_*ang 7

首先,mydict包含以#开头的键,值为列表(列表可以按行的顺序保留行),我们将行添加到此列表中,直到找到以#开头的下一行.然后我们只需要将行列表转换为一个单独的字符串.

我使用python3,如果使用python2替换mydict.items()mydict.iteritems()的迭代键-值对

mydict = dict()
with open("sample.csv") as inputs:
    for line in inputs:
        if line.startswith("#"):
            key = line.strip()[1:]
            mydict.setdefault(key,list())
        else:
            mydict[key].append(line.strip())

result = dict()
for key, vlist in mydict.items():
    result[key] = "".join(vlist)

print(result)
Run Code Online (Sandbox Code Playgroud)

输出:

{'labelA': 'thereissomethinghere', 'label_Bbb': 'hereaswell'}
Run Code Online (Sandbox Code Playgroud)

  • `key = line.strip()[1:]`得到没有`#`的字符串. (2认同)