【问题标题】:Python remove hashtag symbol and keep key wordsPython删除标签符号并保留关键词
【发布时间】:2018-07-18 18:21:50
【问题描述】:

我想删除主题标签符号 ('#') 并下划线分隔单词 ('_')

示例:"this tweet is example #key1_key2_key3"

我想要的结果:"this tweet is example key1 key2 key3"

我的代码使用字符串:

#Remove punctuation , # Hashtag Symbol 
translate_table = dict((ord(char), None) for char in string.punctuation)   
cleaned_combined_tweets.translate(translate_table)

给出结果:"this tweet is example key1key2key3"

【问题讨论】:

标签: python data-cleaning


【解决方案1】:
>>> "this tweet is example #key1_key2_key3".replace("#", "").replace("_", " ")

【讨论】:

    【解决方案2】:

    首先将所有哈希标签原样去除,然后将所有下划线替换为空格;简单易行的解决方案。

    修改代码:

    string = "This tweet is example #key1_key2_key3"
    string = string.strip("#")
    string = string.replace("_"," ")
    print(string)
    

    【讨论】:

    • 我认为str.strip 只适用于字符串的末端。
    • 老实说,当您只想摆脱它时,它比使用替换更短,所以这就是为什么我使用它而不是替换两次。
    • '返回删除前导或尾随字符的字符串副本'-我认为您实际上是错误的
    • strip 只从开头和结尾删除,自己试试s = "abc#def"; s.strip("#"); 'abc#def'
    • 这一次,没有我的朋友。通读您的帖子和 cmets。在新的提示符下运行您的代码。查看输出并重新考虑。
    【解决方案3】:

    你可以使用 re 模块:

    import re
    
    a = 'this tweet is example #key1_key2_key3 sdasd #key1_key2_key3'
    
    def get_all_hashtags(text):
        hash_pattern = re.compile('\#[\w\_]+',re.IGNORECASE)
        return re.findall(hash_pattern,text)
    
    def clean_hashtags(hashtag, return_list=False):
        # return_list just in case you want a list
        if return_list:
            return re.split('\_',hashtag.replace('#',''))
        else:
            return ' '.join(re.split('[\_]+',hashtag.replace('#','')))
    
    print([clean_hashtags(h,True) for h in get_all_hashtags(a)])
    print([clean_hashtags(h) for h in get_all_hashtags(a)])
    

    【讨论】:

      【解决方案4】:

      假设只有#和_作为标点符号:

      import re
      
      tweet = "this tweet is example #key1_key2_key3"
      new_tweet = " ".join(word.strip() for word in re.split('#|_', tweet))
      print (new_tweet)
      
      Out: 'this tweet is example key1 key2 key3'
      

      【讨论】:

        【解决方案5】:

        你可以使用 re 模块:

        a = re.sub('([#])|([^a-zA-Z])',' ',a )
        

        【讨论】:

          猜你喜欢
          • 2017-07-06
          • 2014-06-20
          • 1970-01-01
          • 2019-12-18
          • 2016-10-09
          • 1970-01-01
          • 2018-10-06
          • 2023-01-31
          • 2014-08-09
          相关资源
          最近更新 更多