从字符串中删除表达式(如果存在的话)

时间:2019-08-11 21:32:32

标签: python

我有问题。我有一个像这样的字符串: “你能关灯吗?”现在,我想像这样拆分句子:

['can', 'you', 'please', 'turn', 'off', 'the', 'lights?']

但是现在我也想最后删除?。我知道我可以只使用substr,但表达式并不总是可用。我该如何检测它们,如果存在,将它们从句子中删除?

这是我的代码:

given_command = "Can you please turn off the lights?"

data = given_command.lower().split(" ")
print(data)

4 个答案:

答案 0 :(得分:0)

尝试replace

In [98]: given_command = "Can you please turn off the lights?"
    ...:
    ...: data = given_command.lower().replace('?','').split(" ")
    ...:
    ...: print(data)
['can', 'you', 'please', 'turn', 'off', 'the', 'lights']

答案 1 :(得分:0)

如果仅要删除一个符号(?),请使用str.replace

...
>>> data = given_command.lower().replace('?', '').split(' ')
>>> print(data)
['can', 'you', 'please', 'turn', 'off', 'the', 'lights']

如果符号更多,请使用re.sub(例如,我使用符号?!,.):< / p>

...
>>> import re
>>> data = re.sub(r'[?!,.]', '', given_command.lower()).split(' ')
>>> print(data)
['can', 'you', 'please', 'turn', 'off', 'the', 'lights']

答案 2 :(得分:0)

正如我在评论中引用的链接一样,您可以看到以下链接:enter link description here

它将为您分割任何标记:

import re
pattern = r"\w+(?:\.?\w+)*"
re.findall(pattern, 'hello, to world or not?', re.A)

结果:

['hello', 'to', 'world', 'or', 'not']

答案 3 :(得分:0)

您可以使用re(正则表达式)模块:

import re
given_command = r"Can you please turn off the lights?"
data = given_command.lower().split(" ")
print(list(map(lambda x: re.sub('\\W', '', x), data))) # replace any non alphanumeric character with the empty string

输出:

['can', 'you', 'please', 'turn', 'off', 'the', 'lights']