所以我有:
text = 'Hi my name is !bob i like to !eat'
我想创建一个在感叹号后面包含单词的列表。所以我想要一个函数来创建如下结果:
>>> my_function(text)
['bob', 'eat']
到目前为止,我所能想到的只是:
>>> test_string = text['!':' ']
但是我不能在索引位置使用字符串。有什么建议么?
注意:我希望它们全部为小写,包括重复项。
答案 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']
如果您不希望符号出现在结果中,只需将其替换为''
。