-1

次のようなテキスト ファイルがあります。

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:]
4

4 に答える 4

0

split()に区切り文字列を渡す必要があります。この場合、「:」になります。

string.split()は空白で自動的に分割されますが、行に空白はありません。キーに:が必要な場合は、いつでも次のように連結できます。

categoriesLIWC[line[0] + ":"] = line[1]

また

line[1:]

する必要があります

line[1]
于 2013-01-24T20:27:15.100 に答える
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']}
于 2013-01-24T20:28:26.820 に答える
0

コロンを含めたくない場合は、コロンで分割してキーと値を取得できます

key, value = line.split(':')

于 2013-01-24T20:22:39.687 に答える
0

あなたにはもっと大きな問題があると思います。何をしようとしているのか、なぜこのアプローチを選んだのか?

いくつかのコメント:

  • キーが連番である辞書は、リストと大差ありません。なぜリストを使わないのですか?

  • 01と1は同じ数字です。キーが数字の場合、それら 2 つを区別できません。

  • キーが数値である辞書と、キーが数値の文字列表現である辞書を簡単に比較することはできません。

これにより、キーに整数、値に文字列を含む辞書が作成されます。

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

機能しない場合は、より具体的にする必要があります。何が機能していないのですか?何を期待していて、何を得ていますか?

于 2013-01-24T20:25:48.340 に答える