假设我们从1开始计数,我在索引中返回字符串的位置,例如:
给出:
.pad12 {
padding: 0 12px;
overflow-x: auto
}
和索引s = 'hi how are you'
,我想返回完整的令牌,在这种情况下,它应该是i = 4
或how
,我想返回i=7
或are
我想返回i = 11
,如果返回you
,则返回空格i = 3
。知道如何在字符串中给定位置的情况下获取完整令牌吗?
答案 0 :(得分:3)
创建一个函数,检查s[i]
是否为空格,然后返回空格。否则,将字符串从开头拆分为i
和i
,最后用空格和concat结束,并返回两个拆分的最后一个元素和第一个元素。像这样:
def getToken(str, i):
if str[i] == ' ': # if whitespace, return white space
return str[i]
return str[:i].split(' ')[-1]+str[i:].split(' ')[0] # else return the word
结果:
>>> getToken(s, 0)
'hi'
>>> getToken(s, 1)
'hi'
>>> getToken(s, 2)
' '
>>> getToken(s, 3)
'how'
>>> getToken(s, 11)
'you'
>>> getToken(s, 10)
' '
索引从0开始,如果您希望索引从1开始,只需将yourindex-1
传递给函数。
答案 1 :(得分:2)
我不确定4
与how
的对应关系。但是我想index
是字符串中第一个字母的从零开始的索引。那么您的算法就相当简单:
s = 'hi how are you'
index = 0
print(s[index:].split()[0]) # prints 'hi'
index = 3
print(s[index:].split()[0]) # prints 'how'
index = 7
print(s[index:].split()[0]) # prints 'are'
答案 2 :(得分:2)
您应该使用返回第一个单词的正则表达式。您可以使用类似这样的内容:
def find_token(index, string):
return re.findall('\w+', string[index - 1:])[0]
这将找到一个或多个\w
characters并返回第一个单词。无论单词之间的分隔符是什么,这都将起作用。