Python中的子串,这里有什么问题?

And*_*dré 1 python substring

我正在尝试在Python中模拟子字符串,但我收到一个错误:

    length_message = len(update)
    if length_message > 140:
        length_url    = len(short['url'])
        count_message = 140 - length_url
        update        = update["msg"][0:count_message] # Substring update variable

    print update
    return 0
Run Code Online (Sandbox Code Playgroud)

错误如下:

Traceback (most recent call last):
  File "C:\Users\anlopes\workspace\redes_sociais\src\twitterC.py", line 54, in <module>
    x.updateTwitterStatus({"url": "http://xxx.com/?cat=49s", "msg": "Searching for some ....... tips?fffffffffffffffffffffffffffffdddddddddddddddddddddddddddddssssssssssssssssssssssssssssssssssssssssssssssssssseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedddddddddddddddddddddddddddddddddddddddddddddddfffffffffffffffffffffffffffffffffffffffffffff "})
  File "C:\Users\anlopes\workspace\redes_sociais\src\twitterC.py", line 35, in updateTwitterStatus
    update        = update["msg"][0:count_message]
TypeError: string indices must be integers
Run Code Online (Sandbox Code Playgroud)

我不能这样做?

update        = update["msg"][0:count_message]
Run Code Online (Sandbox Code Playgroud)

变量"count_message"返回"120"

给我点暗示.

最好的祝福,

UPDATE

我打这个电话,更新["msg"]来自这里

x = TwitterC()
x.updateTwitterStatus({"url": "http://xxxx.com/?cat=49", "msg": "Searching for some ...... ....?fffffffffffffffffffffffffffffdddddddddddddddddddddddddddddssssssssssssssssssssssssssssssssssssssssssssssssssseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedddddddddddddddddddddddddddddddddddddddddddddddfffffffffffffffffffffffffffffffffffffffffffffddddddddddddddddd"})
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 6

您是否多次循环使用此代码?

如果是这样,也许第一次通过update是一个字典,并update["msg"]返回一个字符串.精细.

但你设置update等于结果:

update        = update["msg"][0:int(count_message)]
Run Code Online (Sandbox Code Playgroud)

这(大概)是一个字符串.

如果你正在循环,那么下一次循环就会出现错误,因为现在update是一个字符串,而不是一个字符串dict(因此update["msg"]不再有意义).


您可以通过在错误之前输入print语句来调试它:

print(type(update))
Run Code Online (Sandbox Code Playgroud)

或者,如果不是太大,

print(repr(update))
Run Code Online (Sandbox Code Playgroud)