我有一个字符串,其中多个单词由下划线分隔,如下所示:
string = 'this_is_my_string'
让我们举个字符串[n],它会返回一个字母。
现在对于这个索引,我希望在下划线之间得到全文。
因此对于字符串[12]我想要取回'string'这个词,而对于字符串[1]我会回来'这个'
答案 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()
每个部分都基于_
。 示例代码:
>>> my_string = 'this_is_my_sample_string'
# ^ index 14
>>> pos = 14
>>> my_string[:pos].split('_')[-1] + my_string[pos:].split('_')[0]
'sample'