找出特定指数的单词

时间:2016-11-18 11:28:31

标签: python

我有一个字符串,其中多个单词由下划线分隔,如下所示:

string = 'this_is_my_string'

让我们举个字符串[n],它会返回一个字母。

现在对于这个索引,我希望在下划线之间得到全文。

因此对于字符串[12]我想要取回'string'这个词,而对于字符串[1]我会回来'这个'

4 个答案:

答案 0 :(得分:0)

这项工作:

string = 'this_is_my_string'

words = string.split('_')
idx = 0
indexes = {}
for word in words:
    for i in range(len(word)):
        idx += 1
        indexes[idx] = word

print(indexes[1]) # this
print(indexes[12]) #string

答案 1 :(得分:0)

以下代码有效。您可以更改索引和字符串变量并适应新字符串。您还可以使用代码定义一个新函数来概括它。

namespace App\Somenamespace;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    //.. Overrides here
}

答案 2 :(得分:0)

一点正规表达魔术可以完成这项工作:

import re

def wordAtIndex(text, pos):
    p = re.compile(r'(_|$)')
    beg = 0
    for m in p.finditer(text):
        #(end, sym) = (m.start(), m.group())
        #print (end, sym)
        end = m.start()
        if pos < end: # 'pos' is within current split piece
           break
        beg = end+1   # advance to next split piece
    if pos == beg-1:  # handle case where 'pos' is index of split character
        return ""
    else:
        return text[beg:end]

text = 'this_is_my_string'
for i in range(0, len(text)+1):
    print ("Text["+str(i)+"]: ", wordAtIndex(text, i))

它将输入字符串拆分为&#39; _&#39;字符串或字符串结尾处,然后迭代地将给定的位置索引与实际的分割位置进行比较。

答案 3 :(得分:-1)

使用字符串切片的非常简单的方法是:

  • 根据位置
  • 将列表分为两部分
  • split()每个部分都基于_
  • 连接第1部分的最后一项和第2部分的第一项

示例代码:

>>> my_string = 'this_is_my_sample_string'
#                              ^ index 14
>>> pos = 14

>>> my_string[:pos].split('_')[-1] + my_string[pos:].split('_')[0]
'sample'