从str中切出一个str并添加到列表中[Python]

时间:2018-11-27 05:26:36

标签: python string list indexof

所以我有:

text = 'Hi my name is !bob i like to !eat'  

我想创建一个在感叹号后面包含单词的列表。所以我想要一个函数来创建如下结果:

>>> my_function(text)  
['bob', 'eat']

到目前为止,我所能想到的只是:

>>> test_string = text['!':' ']  

但是我不能在索引位置使用字符串。有什么建议么?

注意:我希望它们全部为小写,包括重复项。

4 个答案:

答案 0 :(得分:4)

我可以使用正则表达式:

import re
text = 'Hi my name is !bob i like to !eat'
test_string = re.findall(r'!(\w+)', text)
print(test_string)

结果:

$ python x.py 
['bob', 'eat']

答案 1 :(得分:1)

您可以在split!,然后在split上再次' '。从第二个细分的每个细分中获取第一个条目。

[segment.split()[0] for segment in text.split("!")[1:]]
# ['bob', 'eat']

答案 2 :(得分:1)

我能想到的最简单的解决方案[可能看起来不是pythonic;)]

words = [x[1:] for x in text.split(" ") if x[0]=='!']

print(words)

输出:

['bob', 'eat']

答案 3 :(得分:0)

如果您确定要查找的符号总是直接出现在感兴趣的单词之前,则只需检查该符号是否在单词列表中即可。

text = 'Hi my name is !bob i like to !eat'  
symb = '!'

def my_function(some_text): 
    return [i.replace(symb,'').lower() for i in text.split() if symb in i]

my_function(text)
>>['bob', 'eat']

如果您不希望符号出现在结果中,只需将其替换为''