这是一个非常新手的问题,我可能会对它进行投票,但我真的在至少一个小时的谷歌搜索后找不到答案。我学会了如何根据“确切位置”对字符串进行切片,您必须确切地知道单词结束的位置。但我没有发现任何文章解释了如何改变“非静态”字符串。
此外,我不想在这种情况下使用string.split(),因为它对我所需要的东西有点过分。
我基本上有这样的字符串:
myString = "!save python Python is a high-level object oriented language created by Guido van Rossum."
# the format is !save [singleword] [definition]
我需要“切片”这个字符串,但我无法找到一个合适的方法来实现它。
我需要保存一个变量标题(在本例中为python)和该字符串的定义。 Somethig喜欢:
title = myString[1]
definition = myString[everything after string[1]
当你有一个动态字符串,你不知道每个单词的结尾时,我不确定如何做到这一点。
我非常感谢有关我应该阅读哪些功能/方法的建议。提前谢谢。
答案 0 :(得分:12)
为什么分裂矫枉过正?
verb, title, definition = myString.split (' ', 2)
答案 1 :(得分:2)
如果命令,标题和定义之间有空格,您可以:
wordList = myString.split()
cmd = wordList[0] # !save
title = wordList[1] # python
definition = ' '.join(wordList[2:]) # Python is a high-level object oriented language created by Guido van Rossum.
如果你真的不想使用split,你可以使用正则表达式:
import re
m = re.match('(/S+)/s*(/S+)/s*(.*)')
cmd = m.group(1)
title = m.group(2)
definition = m.group(3)
答案 2 :(得分:2)
所选答案(在PEP8之后):
verb, title, definition = my_string.split(' ', 2)
分裂在一个空格上。如果在标题的两边都有标签或多个空格,那么拆分空格的运行可能是更好的选择:
verb, title, definition = my_string.split(None, 2)
还要考虑规范化定义中的空格:
definition = ' '.join(definition.split())