[英]How to split string at a specific char(set of chars, actually), but with specified length
我很确定有这样的问题..
这是问题所在 - 我想拆分一个字符串,使用一些指定的字符作为分隔符,但我也希望子字符串的长度接近指定值。
现实世界的例子 - 分割长字幕行。
例子:
1234,asd dsa qwerty 567,
我想将该行拆分为具有最大长度的多行,例如 10 行,但我不想“拆分”单词。 所以,这应该变成:
1234,asd
dsa qwerty
567,
当然,我可以通过分隔符拆分行,然后再次将它们连接起来,直到达到所需的长度,但这会非常慢。
我考虑过使用str.find
(并使用返回的位置),但它不能与正则表达式一起使用(因为不同的分隔符 - .
, ,
, ;
, \n
, , ETC。)。
我想re.findall
,但我想不出一个正则表达式。 我想到了类似的东西
(.*){, max_len}\s
使用re.S
,但它显然不起作用。 应该有一些棘手的方法..
In [1]: import textwrap
In [2]: textwrap.wrap('1234,asd dsa qwerty 567,', 10)
Out[2]: ['1234,asd', 'dsa qwerty', '567,']
以下代码根据需要在宽度为 10 的空格处拆分您的字符串:
import re
r = "1234,asd dsa qwerty 567,"
p = re.compile("(.{,10})($|\s)")
r = p.sub("\\1\n", r)
在这种情况下,它会产生 output
1234,asd
dsa qwerty
567,
当以宽度 5 分割时,你得到
1234,asd
dsa
qwerty
567,
你可以看到,这个方法永远不会分割单词。
如果您喜欢其他分隔符,只需将“\s”替换为所需的正则表达式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.