我是编程新手,昨天开始学习python用于科学目的。
现在,我想将一个非常长的字符串(174个字符串)分成几个较小的字符串,如下所示:
string = 'AA111-99XYZ '
split = ('AA', 11, 1, -99, 'XYZ')
现在,我唯一能想到的是使用切片语法x次,但也许有一种更优雅的方式?有没有办法使用整数列表来指示拆分的位置,例如
split_at = (2, 4, 5, 8, 11)
split = function(split_at, string)
我希望我的问题不是太傻 - 我找不到类似的例子,但也许我只是不知道我在找什么?
谢谢,
扬
答案 0 :(得分:3)
像这样:
>>> string = 'AA111-99XYZ '
>>> split_at = [2, 4, 5, 8, 11]
>>> [string[i:j] for i, j in zip([0]+split_at, split_at+[None])]
['AA', '11', '1', '-99', 'XYZ', ' ']
答案 1 :(得分:1)
def split_string(string, points):
for left, right in zip(points, points[1:]):
yield string[left:right]
答案 2 :(得分:0)
为了避免冗余,您可以采用ATOzTOA的优秀解决方案并将其置于lamba函数中:
st = 'AA111-99XYZ '
sa = [2, 4, 5, 8, 11]
res = lambda string,split_at:[string[i:j] for i, j in zip([0]+split_at, split_at+[None])]
print(res(st,sa))
答案 3 :(得分:0)
我自己比较陌生,我在这里采用了一个完整的初学者的方法,只是为了指导那些还不熟悉Python功能的人。
string = 'AA111-99XYZ '
split_at = [2, 4, 5, 8, 11]
for i in range(len(split_at)):
if i == 0:
print string[:split_at[i]]
if i < len(split_at)-1:
print string[split_at[i]:split_at[i+1]]
if i == len(split_at)-1:
print string[split_at[i]:]