在 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]]
fullstr = "my|name|is|will"
fullstr.split('|')[1]
fullstr.rsplit('|')[1]
我有一个字符串 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]]
fullstr = "my|name|is|will"
fullstr.split('|')[1]
fullstr.rsplit('|')[1]