Python中根据分隔符将字符串分割成特定的子字符串存储在多列中

问题描述 投票:0回答:3

我想将此字符串 A->B->C->D->E->F 拆分为子字符串 A->B,B->C,C->D,D->E,E-> F.

我尝试使用 split 和分隔符作为“->”,但这并没有以我想要的方式给出输出。非常感谢这里的帮助!

我在数据框中的一列中有多个这样的值。我想创建与最大分割数一样多的新列,然后将每个分割存储在数据框中的相应列中。 Desired output

python string split substring
3个回答
2
投票

您可以按照您所做的操作将所有字母按顺序放入列表中,然后只需执行类似 for 循环的操作,从每个字母生成索引为“idx”和“idx + 1”的所需子字符串

my_string = "A->B->C->D->E->F"
items = my_string.split("->")
substrings = []

for idx in range(len(items) - 1):
  substrings.append(items[idx] + "->" + items[idx+1])

2
投票

OP 不清楚,但可能需要子字符串列表。在这种情况下...

from itertools import pairwise

s = "A->B->C->D->E->F"

result = ["->".join(p) for p in pairwise(s.split("->"))]

print(result)

输出:

['A->B', 'B->C', 'C->D', 'D->E', 'E->F']

0
投票

您可以使用

str.split
itertools.pairwise
map
str.join
:

from itertools import pairwise

s = 'A->B->C->D->E->F'
out = ','.join(map('->'.join, pairwise(s.split('->'))))

输出:

'A->B,B->C,C->D,D->E,E->F'

如果您有 Series/DataFrame,则逻辑相同:

from itertools import pairwise

df = pd.DataFrame({'col': ['A->B->C->D->E->F']})

df['out'] = df['col'].map(lambda x: ','.join(map('->'.join, pairwise(x.split('->')))))

                col                       out
0  A->B->C->D->E->F  A->B,B->C,C->D,D->E,E->F
© www.soinside.com 2019 - 2024. All rights reserved.