我有一条消息,例如
message= "Hello #world I am in #London and it is #sunny today it is #2016"
我需要此消息中的2个数组,其中一个应该是单词,它是拆分词,并且(不是主题标签)仅在第二个主题标 checkout 现之前 strong> 并且不需要将第二个主题标签之后的其余单词存储为关键字,例如:
key words:`['Hello','I','am','in']`
我还需要按照消息中出现的顺序存储所有主题标签:
tags: `['#world','#London','#sunny','#2016']`
要在出现第二个主题标签之前拆分单词,我使用以下代码:
i=message.find("#",str(row[0]).find("#")+1)
words=re.sub(r'[)|*&$^(;!][,]', r' ',(message)[:i])).split()
问题是在这种情况下我仍然有第一个标签!?
我还需要在Python中构建一个类似标签的数组?
最佳答案
您可以使用str.split
来做到这一点和 list comprehensions而不是正则表达式。其算法是
- 将消息分成几个部分并使用列表理解过滤标签
- 使用第二个标签剪切第一条消息
- 再次使用列表理解,找到关键词。
>>> message= "Hello #world I am in #London and it is #sunny today it is #2016"
>>> tags = [i for i in message.split() if i[0]=='#']
>>> temp_message = message.split(tags[1])[0]
>>> key_words = [i for i in temp_message.split() if i[0]!='#']
>>> tags
['#world', '#London', '#sunny', '#2016']
>>> key_words
['Hello', 'I', 'am', 'in']
关于python - Python中将字符串数据按照自定义顺序拆分为关键字,并单独存储特定关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35940513/