在 Python 中获取子字符串

Getting Substring in Python

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

pos = fullstr.find('|') 

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

您可以使用

fullstr.split("|")[1]

这将在“|”处将字符串分开标记和 return 列表。抓取第二个项目(列表是 0 索引的,所以这是索引 1)将 return 期望的结果。

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

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

然后你想要的就在这里:

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

如果需要,您仍然可以使用 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]]

最简单的方法就是使用 split or rsplit:

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