2

这是一个非常新手的问题,我可能会因此而被否决,但老实说,经过至少一个小时的谷歌搜索,我找不到答案。我学习了如何根据“确切位置”对字符串进行切片,您必须知道单词在哪里结束。但我没有找到任何文章解释如何处理可能改变的“非静态”字符串。

我也不想在这种情况下使用 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)和这个字符串的定义。像这样的东西:

title = myString[1]
definition = myString[everything after string[1]

当您有一个不知道每个单词在哪里结束的动态字符串时,我不确定如何执行此操作。

我将非常感谢一些关于我应该阅读哪些功能/方法来归档它的指针。先感谢您。

4

3 回答 3

12

为什么拆分过大?

verb, title, definition = myString.split (' ', 2)
于 2009-07-14T22:35:41.390 回答
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)
于 2009-07-14T22:34:32.203 回答
2

选择的答案(PEP8ing 之后):

verb, title, definition = my_string.split(' ', 2)

在单个空间上拆分。如果标题两侧有制表符或多个空格,则在运行的空白处拆分可能是更好的选择:

verb, title, definition = my_string.split(None, 2)

还要考虑规范化定义中的空白:

definition = ' '.join(definition.split())
于 2009-07-15T00:26:02.663 回答