2

私はこのPythonコードを持っています:

sm.GetSMSStatus() 
sm.GetSMSFolders() 
sms = sm.GetNextSMS(Start = True, Folder=0)
sms = sm.GetNextSMS(Location = sms['Location'], Folder=0)
sms = sm.GetSMS(Location = loc, Folder = 0)

そして、私はエラーが発生しています:

    Traceback (most recent call last):
  File "sms_teste.py", line 43, in <module>
    sms = sm.GetNextSMS(Location = sms['Location'], Folder=0)
TypeError: list indices must be integers, not str

私が解決しようとしたこと:

最初に、同じ問題に対する答えを探していましたが、似たようなものは見つかりませんでした。

よると、sms 変数の出力を作成して、それが何を返すかを確認し、「場所」がどのように割り当てられているかを確認しました。これは以下の出力です。

[{'RejectDuplicates': 0, 'SMSCDateTime': datetime.datetime(2014, 7, 1, 16, 31, 58), 'Class': 1, 'Name': u'', 'InboxFolder': 0, 'Text': u'dsgfzggzdfrg', 'SMSC': {'DefaultNumber': u'', 'Format': 'Text', 'Number': u'+#####', 'Validity': 'Max', 'Location': 0, 'Name': u''}, 'ReplaceMessage': 0, 'Coding': 'Default_No_Compression', 'Number': u'+#####', 'DateTime': None, 'DeliveryStatus': 0, 'State': 'UnSent', 'MessageReference': 0, 'Length': 12, 'Location': 0, 'Memory': 'SM', 'ReplyViaSameSMSC': 0, 'UDH': {'Text': '', 'ID16bit': 0, 'AllParts': 0, 'ID8bit': 0, 'PartNumber': -1, 'Type': 'NoUDH'}, 'Type': 'Submit', 'Folder': 2}]

そして、「場所」が0に等しいことに気付きましたが、そこに到達するための鍵は「場所」ですが、今私は行き詰まっています.変数自体が文字列キー? 私は gammu を使用しているため、関数の結果が事前にフォーマットされているため、フォームが返されます。

誰か手を貸してくれませんか?

私の情報があなたが私の質問を理解できるように役立つことを願っています PS電話番号は意図的に# # #

4

2 に答える 2

1

何が起こるかというと、それsmsリストです(かっこのため[])。そして、その唯一の要素はディクショナリ{}です。

あなたは何ができますか?そのリストの一意の要素にアクセスできます。これは辞書になります。

sms[0]['Location']
......
   '-----> dictionary
于 2014-07-01T16:48:43.427 に答える
0

smslistタイプのインデックスを受け入れないastrです:

>>> type(sms)
<type 'list'>

そして、辞書が含まれています:

>>> type(sms[0])
<type 'dict'>

したがって、以下を発行できます。

>>> sms[0]['Location']
0
于 2014-07-01T16:49:56.320 に答える