需要一些python字符串/切片操作的帮助

时间:2009-07-14 22:31:09

标签: python string slice

这是一个非常新手的问题,我可能会对它进行投票,但我真的在至少一个小时的谷歌搜索后找不到答案。我学会了如何根据“确切位置”对字符串进行切片,您必须确切地知道单词结束的位置。但我没有发现任何文章解释了如何改变“非静态”字符串。

此外,我不想在这种情况下使用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]

当你有一个动态字符串,你不知道每个单词的结尾时,我不确定如何做到这一点。

我非常感谢有关我应该阅读哪些功能/方法的建议。提前谢谢。

3 个答案:

答案 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())