如何以不规则的间隔将字符串拆分为一个列表

2024-10-02 02:30:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用一个间隔列表来拆分字符串,在与字符索引对应的第一个间隔值之前插入一个空格,在与字符索引对应的第二个间隔值之后插入一个空格。在

我知道如何按一定的间隔分开一根绳子:

string = 'anexample'
result = []
for i in range(0, len(string), 2):
    result.append(' ')
    result.append(line[i:i+2])
result = [' ','an',' ','ex',' ','am',' ','pl',' ','e']

但我不确定我会如何使用这样的间隔列表:

^{pr2}$

结果是:

^{3}$

任何帮助都将不胜感激,谢谢。在

编辑:interval_列表是通过比较列表中的字符与字符串得到的,例如:

string = 'anexample'
word_list = ['exam']
interval_list = [[2,5]]

其中string[2]=“e”,string[5]=“m”。在“e”之前和“m”之后添加一个空格可以得到:

result = ['an',' ','exam',' ','ple']

Tags: 字符串an列表forstring间隔result字符
3条回答

假设间隔总是按顺序列出:

string = 'anexample'
result = []
interval_list = [[0,0],[2,5]]

for i,interval in enumerate(interval_list):
    # append the part of the string before the first interval (if any)
    if i < 1 and interval[0] > 0:
        result.append(string[0:interval[0]])

    result.append(' ')
    result.append(string[interval[0]:interval[1]+1])
    result.append(' ')

    # append the part of the string before the next interval (if any)
    if i < len(interval_list) - 1 and (interval_list[i+1][0]>interval[1]+1):
        result.append(string[interval[1]+1:interval_list[i+1][0]])

    # append the rest of the string to result
    elif i == len(interval_list) - 1 and i < len(string)-1:
        result.append(string[interval[1]+1:len(string)])

print(result)

输出:

^{pr2}$

如果间隔列表从0开始,则可以使用以下代码:

string = 'anexample'
result = []
interval_list = [[0,0],[2,5]]

for i in range(len(interval_list)) :
    current_interval = interval_list[i]
    result.append(" ")
    result.append(string[current_interval[0]:current_interval[1]+1])
    result.append(" ")
    if i < len(interval_list) - 1 :
        next_interval = interval_list[i+1]
        result.append(string[current_interval[1]+1:next_interval[0]])
    if i == len(interval_list) - 1 :
        if string[current_interval[1]+1:] is not '' :
            result.append(string[current_interval[1]+1:])

output : [' ', 'a', ' ', 'n', ' ', 'exam', ' ', 'ple']

IMHO,你的interval_list非常不舒服。它应该看起来像

lst = [0, 1, 2, 6, 9]

那么你就可以

^{pr2}$

你就完蛋了。在


如果对interval_list的结构没有影响,可以通过

lst = [i for sub in interval_list for i in sub]
for i in range(1, len(lst), 2):
    lst[i] += 1
lst += [len(string)]

# [0, 1, 2, 6, 9]

或者如果你有纽比进口

lst = np.array(interval_list).flatten()
lst[1::2] += 1
lst = np.append(lst, len(string))

相关问题 更多 >

    热门问题