【问题标题】:How to split a string in Python?如何在 Python 中拆分字符串?
【发布时间】:2009-12-03 09:16:03
【问题描述】:

我已阅读文档,但不完全了解如何操作。

我知道我需要在字符串中包含某种标识符,以便函数可以找到拆分字符串的位置(除非我可以定位句子中的第一个空格?)。

例如,我将如何拆分: "Sico87 is an awful python developer""Sico87""is an awful Python developer"?

字符串是从数据库中检索出来的(如果这很重要的话)。

【问题讨论】:

  • 您的添加不合适。请提出一个新问题。
  • 怎么不合适?它问的是同样的问题,但有代码示例?谈迂腐!
  • 这不是迂腐。 StackOverflow 之所以有用,正是因为单独的问题是分开的,所以对这个精确问题的好的答案会浮到顶部。在您使用的任何模板系统中使用 Python 与如何拆分字符串非常正交。

标签: python string


【解决方案1】:

对字符串使用split 方法:

>>> "Sico87 is an awful python developer".split(' ', 1)
['Sico87', 'is an awful python developer']

工作原理:

  1. 每个字符串都是一个对象。字符串对象上定义了某些方法,例如 split 在这种情况下。你用obj.<methodname>(<arguments>)给他们打电话。
  2. split 的第一个参数是分隔各个子字符串的字符。在这种情况下,这是一个空格,' '
  3. 第二个参数是应该执行拆分的次数。在你的情况下是1。省略第二个参数会尽可能频繁地应用拆分:

    >>> "Sico87 is an awful python developer".split(' ')
    ['Sico87', 'is', 'an', 'awful', 'python', 'developer']
    

当然,您也可以将子字符串存储在单独的变量中而不是列表中:

>>> a, b = "Sico87 is an awful python developer".split(' ', 1)
>>> a
'Sico87'
>>> b
'is an awful python developer'

但请注意,如果某些输入不包含空格,这将导致麻烦:

>>> a, b = "string_without_spaces".split(' ', 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack

【讨论】:

  • 感谢解释拆分功能的好方法
【解决方案2】:

使用partition(' '),它总是返回元组中的三个项目——第一个直到分隔符,分隔符,然后是后面的位。元组中不适用的槽仍然存在,只是设置为空字符串。

示例: "Sico87 is an awful python developer".partition(' ') 返回["Sico87"," ","is an awful python developer"]

"Sico87 is an awful python developer".partition(' ')[0] 返回"Sico87"

另一种更复杂的方法是使用split(' ',1),它的工作原理类似,但返回一个变量数字的项目。它将返回一个或两个项目的元组,第一个项目是第一个单词直到分隔符,第二个是字符串的其余部分(如果有的话)。

【讨论】:

  • maxsplit 参数的错误使用
  • thx abyx,在您添加评论时看到并修复了它:)
  • 我不知道我是否会说使用 maxsplit 拆分更棘手,它只会使元组解包不起作用。不过,我非常同意在这种情况下使用分区 + 元组解包;它简洁一致。
  • 死灵凹凸。使用“拆分命令”获取每个分隔符的变量直到一个点,然后为之后的所有内容返回一个变量的解释正是我正在寻找的,干杯。
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
相关资源
最近更新 更多