我有问题。我有一个像这样的字符串: “你能关灯吗?”现在,我想像这样拆分句子:
['can', 'you', 'please', 'turn', 'off', 'the', 'lights?']
但是现在我也想最后删除?
。我知道我可以只使用substr
,但表达式并不总是可用。我该如何检测它们,如果存在,将它们从句子中删除?
这是我的代码:
given_command = "Can you please turn off the lights?"
data = given_command.lower().split(" ")
print(data)
答案 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']