我的代码需要这样的东西: Split python string every nth character?
然而,在我的情况下; n是嵌套列表中的数字,我想要拆分的字符串也在嵌套列表中。
myList = [["'hello''my name'"],["'is Michael'"],["'and'", "'I like''apples'"]]
nList = [[7,9],[12],[5,8,8]
我想得到这样的东西:
myNewList = [["'hello'","'my name'"],["'is Michael'"],["'and'", "'I like'","'apples"]]
即我希望将字符串拆分为与nList
中的数字相对应的长度。
我尝试对上面发布的链接使用类似的解决方案:
我的尝试:
myNewList = [myList[sum(nList[:i]):sum(nList[:i+1])] for i in range(len(nList))]
但它与我的情况不符。
编辑:
注意,我不想在每个引用后使用split
,但是可以将其作为解决方案提供。数字有所不同,这是一个简化的场景,我用它来暗示我的XML数据处理/写入情况。
答案 0 :(得分:0)
对于结构 兼容的情况,我有一个解决方案。原始问题的一部分是缺少的下标:mlList的每个元素都是一个包含字符串列表的子列表。我已经连接了最终列表并插入了 [0] 下标,现在是多余的。
这足够接近让你感动吗?如果没有,我可以添加必要的''。join 来完成这项工作,但这甚至比这还要糟糕。
我也建议您使用xml解析工具和正则表达式。这是一个很好的练习,但它并不是特别易于维护。
myList = [["'hello''my name'"], ["'is Michael'"], ["'and''I like''apples'"]]
nList = [[7, 9], [12], [5, 8, 8]]
myNewList = [[myList[phrase][0][sum(nList[phrase][:spl]):sum(nList[phrase][:spl+1])]
for spl in range(len(nList[phrase]))]
for phrase in range(len(myList))]
print myNewList
没关系;对我上面的尝试来说,这是一个微不足道的补充:
myList = [["'hello''my name'"], ["'is Michael'"], ["'and'", "'I like''apples'"]]
nList = [[7, 9], [12], [5, 8, 8]]
myNewList = [[''.join(myList[phrase])[sum(nList[phrase][:spl]):sum(nList[phrase][:spl+1])]
for spl in range(len(nList[phrase]))]
for phrase in range(len(myList))]
print myNewList
输出:
[["'hello'", "'my name'"], ["'is Michael'"], ["'and'", "'I like'", "'apples'"]]
答案 1 :(得分:0)
res = []
for word, nums in zip(myList, nList):
row = []
curr = 0
for offset in nums:
row.append(word[0][curr:curr+offset])
curr += offset
res.append(row)
print(res)
虽然未经测试。