.remove不删除给定的String

时间:2018-01-15 05:29:51

标签: python python-2.7

tweets = api.search(q="@mytwitter",count=100,include_entities=True)
t = ['@mytwitter', '@MyTwitter']

for s in tweets:
    sn = s.user.screen_name
    m = "@%s message" % (sn)
    s = api.update_status(m, s.id)
    #print(dir(s))

for result in tweets:
    print str(result.text)

for userName in result.text:
    if userName == "@mytwitter":
        result.text.remove(userName)
        print (userName)
    else:
        print("No username")

不确定为什么userName没有从result.text中删除我的Twitter名称。我错过了什么吗?我得到的输出是"No username"重复了很多次。

如果它有助于result.text的原始输出为"@mytwitter their message"我正在尝试删除@mytwitter.

2 个答案:

答案 0 :(得分:1)

你的问题是条件

if userName == "@mytwitter":

永远不会是真的,所以.remove()从未被调用过。如果您想在result.text中搜索获取您的姓名,请尝试以下操作:

tweets = api.search(q="@mytwitter",count=100,include_entities=True)

for s in tweets:
    sn = s.user.screen_name
    m = "@%s message" % (sn)
    s = api.update_status(m, s.id)

for tweeet in tweets:
    if "@mytwitter" in tweeet.text:
        tweeet.text = tweeet.text.replace("@mytwitter", "")
        print(tweeet.text)
    else:
        print("No username")

P.S。 str 对象没有.remove()方法,请尝试使用空字符串替换.replace(),如上所列。

答案 1 :(得分:0)

字符串在Python中是不可变的,因此您必须将新字符串分配给另一个变量:

for tweet_text in tweets:
    if "@mytwitter" in tweet_text:
        new_str = tweet_text.replace("@mytwitter", "") # assigning new string wothout "@mytwitter" to another variable
        print(new_str)
    else:
        print("No username")

示例:

tweets = ["@mytwitter","1234","0987@mytwitter","@mytwitter145236","  @mytwitter12"]


for tweet_text in tweets:
    if "@mytwitter" in tweet_text:
        new_str = tweet_text.replace("@mytwitter", "") # assigning new string wothout "@mytwitter" to another variable
        print(new_str)
    else:
        print("No username")

输出:

No username

0987
145236
  12