python - Python中将字符串数据按照自定义顺序拆分为关键字,并单独存储特定关键字

标签 python regex string list

我有一条消息,例如

 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/

相关文章:

mysql - 无法找到一种方法来否定模式内的正则表达式

java - 为什么Java字符串有拷贝构造函数?

php - 你如何找到 PHP 中 2 个字符串之间的区别?

python - list.append(something) unicode - ascii

python - 正则表达式从 Python 中的文本中提取具有维度的数量

python - 合并 strip 时间戳

java - 正则表达式以防止特定字符出现在数字之前

java - Java 中 JNDI 的简单字符串值

python - Flask-SQLAlchemy with_for_update() 行锁

python - 为什么在 ConvLSTM 中设置 return_sequence = False 时会出现错误?