在Python中使用分隔符拆分字符串

时间:2014-07-24 05:34:30

标签: python regex string split

我有一个这样的字符串作为例子:

  

" [问候]你好[我]我的名字是约翰。"

我想拆分并得到这样的结果

('[greetings]', 'Hello' , '[me]', 'my name is John')

可以在一行代码中完成吗?

好的另一个例子似乎很多人误解了这个问题。

  

" [问候]你好我的朋友[我]我的名字是约翰。很高兴见到你。"

然后我应该

 ('[greetings]', ' Hello my friends ' , '[me]', ' my name is John. ', '[bow]', ' nice to meet you.')

我基本上想把这种字符串发送给我的机器人。它将自动分解它并做一些与[问候] [我]和[弓]对应的动作,并在其间说出其他字符串。

3 个答案:

答案 0 :(得分:1)

你所追求的功能是.split()。该函数接受分隔符作为其参数,并返回通过在每次出现分隔符时拆分字符串而生成的列表。要使用"[""]"作为分隔符来拆分字符串,您应该使用regular expression

import re
str = "[greeting] Hello [me] my name is John."
re.split("\]|\[", str)
# returns ['', 'greeting', ' Hello ', 'me', ' my name is John.']

这使用正则表达式来分割字符串。

\] # escape the right bracket
|  # OR
\[ # escape the left bracket

答案 1 :(得分:1)

使用正则表达式:

>>> import re
>>> s = "[greeting] Hello my friends [me] my name is John. [bow] nice to meet you."
>>> re.findall(r'\[[\w\s.]+\]|[\w\s.]+', s)
['[greeting]', ' Hello my friends ', '[me]', ' my name is John. ', '[bow]', ' nice to meet you.']

修改

>>> s =  "I can't see you"
>>> re.findall(r'\[.*?\]|.*?(?=\[|$)', s)[:-1]
["I can't see you"]
>>> s = "[greeting] Hello my friends [me] my name is John. [bow] nice to meet you."
>>> re.findall(r'\[.*?\]|.*?(?=\[|$)', s)[:-1]
['[greeting]', ' Hello my friends ', '[me]', ' my name is John. ', '[bow]', ' nice to meet you.'

答案 2 :(得分:0)

我认为不能在一行中完成,您需要先按]分割,然后[

# Run in the python shell
sentence = "[greeting] Hello [me] my name is John."
for part in sentence.split(']')
  part.split('[')

# Output
['', 'greeting']
[' Hello ', 'me']
[' my name is John.']