我有一个看起来像这样的文本文件:
01:Pronoun
02:I
03:We
04:Self
05:You
06:Other
07:Negate
08:Assent
09:Article
10:Preps
11:Number
12:Affect
...
现在我想制作一本这样的字典..这样的字典:
{'01:': ['pronoun'], '02': ['I'],...}
这是我到目前为止所获得的代码,但它似乎并不像我想要的那样......
with open ('LIWC_categories.text','rU') as document1:
categoriesLIWC = {}
for line in document1:
line = line.split()
if not line:
continue
categoriesLIWC[line[0]] = line[1:]
答案 0 :(得分:0)
如果您不想包含冒号,可以在冒号上拆分以获取密钥和值
key, value = line.split(':')
答案 1 :(得分:0)
我认为你有一个更大的问题。你想做什么,为什么选择这种方法?
一对评论:
键是序列号的字典与列表没有太大区别。为什么不使用清单?
数字01和1是相同的数字。如果你的钥匙是数字, 你无法区分这两者。
您无法轻易地将键为数字的字典与a进行比较 字典,其中键是数字的字符串表示。
这将创建一个字典,其中包含键的整数和值的字符串:
with open ('LIWC_categories.text','rU') as document1:
categoriesLIWC = {}
for line in document1:
line = line.strip()
if not line:
continue
key, value = line.split(':')
if key.isdigit():
categoriesLIWC[int(key)] = value
else:
categoriesLIWC[key] = value
如果它不起作用,您需要更具体。什么不起作用?你有什么期待,你得到了什么?
答案 2 :(得分:0)
您需要将分隔符字符串传递给split()。在这种情况下,它将是“:”。
string.split()会自动拆分空格,但你的行上没有空格。如果你想要:在键中,你总是可以用
连接它categoriesLIWC[line[0] + ":"] = line[1]
另外
line[1:]
应该是
line[1]
答案 3 :(得分:0)
In [27]: dic={}
In [28]: with open("abc.txt") as f:
for line in f:
if line.strip(): #if line is not empty
k,v=line.split(":") #split at ":" not at whitespaces
dic[k]=[v.strip()] #add to dict
....:
In [29]: dic
Out[29]:
{'01': ['Pronoun'],
'02': ['I'],
'03': ['We'],
'04': ['Self'],
'05': ['You'],
'06': ['Other'],
'07': ['Negate'],
'08': ['Assent'],
'09': ['Article'],
'10': ['Preps'],
'11': ['Number'],
'12': ['Affect']}