Python删除标签符号并保留关键词
Posted
技术标签:
【中文标题】Python删除标签符号并保留关键词【英文标题】:Python remove hashtag symbol and keep key words 【发布时间】: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"
【问题讨论】:
replace
方法有什么问题?
【参考方案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 )
【讨论】:
以上是关于Python删除标签符号并保留关键词的主要内容,如果未能解决你的问题,请参考以下文章