鉴于:
s = 'foo, bar, baz, qudz'
我想给定2条条件来拆分此字符串:
字符数n(在这种情况下,我将使用n = 10)
分隔符:“,”(第n个字符之前)
所需结果:
['foo, bar', 'baz, qudz']
我知道我可以很容易地用定界符分割它:
s.split(', ')
['foo', 'bar', 'baz', 'qudz']
我也知道我可以将它分成n个这样的大块:
[s[i:i+n] for i in range(0, len(s), n)]
我还看到了可以在第n个定界符here处分割的地方。
最佳答案
您可以使用functools.reduce
完成此操作。
import functools
def splitter(s, n):
def helper(acc, v):
tmp1 = acc[-1]
tmp2 = len(tmp1)
if tmp2 >= n or tmp2 + len(v) >= n:
acc.append(v)
else:
acc[-1] = tmp1 + ',' + v
return acc
tmp1 = s.split(',')
if len(tmp1) == 1:
return tmp1
return list(functools.reduce(helper, tmp1[1:], [tmp1[0]]))
关于python - 如何按字符数和定界符将字符串拆分成块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60218815/