【问题标题】:Getting Substring in Python在 Python 中获取子字符串
【发布时间】:2016-02-08 06:28:59
【问题描述】:

我有一个字符串fullstr = "my|name|is|will",我想提取子字符串“name”。 我用string.find 找到'|'的第一个位置像这样:

pos = fullstr.find('|') 

它返回 2 作为 '|' 的第一个位置.我想从pos 位置打印子字符串,直到下一个'|'。有rsplit 功能,但它返回字符串右侧的第一个字符,因为有很多'|'在我的字符串中。如何打印子串?

【问题讨论】:

  • 如果你想分割"|"上的输入,那么只需使用sullstr.split("|"),这将导致["my", "name", "is", "will"]

标签: python python-2.7 substring python-2.x


【解决方案1】:

如果你愿意,你仍然可以使用find,找到|的第一个位置和下一个:

fullstr = "my|name|is|will"
begin = fullstr.find('|')+1
end = fullstr.find('|', begin)
print fullstr[begin:end]

使用index的类似方式:

fullstr = "my|name|is|will"
begin = fullstr.index('|')+1
end = fullstr.index('|', begin)
print fullstr[begin:end]

另一种方法是使用 re.finditer 在字符串中查找所有出现的 | 并按索引对其进行切片:

import re

all = [sub.start() for sub in re.finditer('\|', fullstr)]
print fullstr[all[0]+1:all[1]] 

你也可以看看re.search

import re

fullstr = "my|name|is|will"
print re.search(r'\|([a-z]+)\|', fullstr).group(1)

有一个有趣的方式使用enumerate

fullstr = "my|name|is|will"
all = [p for p, e in enumerate(fullstr) if e == '|']
print fullstr[all[0]+1:all[1]]

最简单的方法就是使用splitrsplit

fullstr = "my|name|is|will"
fullstr.split('|')[1]
fullstr.rsplit('|')[1]

【讨论】:

    【解决方案2】:

    你可以使用

    fullstr.split("|")[1]
    

    这将在“|”处将字符串分开标记并返回一个列表。抓取第二项(列表索引为 0,因此这是索引 1)将返回所需的结果。

    【讨论】:

      【解决方案3】:

      使用 split() 方法将字符串拆分为一个字符。

      fullstr.split('|') == ['my', 'name', 'is', 'will']
      

      然后你想要的就在这里:

      fullstr.split('|')[1] == 'name'
      

      【讨论】:

        猜你喜欢
        • 2010-10-14
        • 2016-06-01
        • 1970-01-01
        • 2018-07-19
        • 1970-01-01
        • 2014-04-23
        • 2021-09-30
        相关资源
        最近更新 更多