繁体   English   中英

如何以特定的字符(实际上是一组字符)拆分字符串,但具有指定的长度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM