【发布时间】:2015-11-30 14:40:08
【问题描述】:
我正在寻找一种方法来从一大串字符串中创建行。
字符串长度可以从 4 个字符到 20 个字符。
行大小最大为 255 个字符。
字符串应该用逗号+空格分隔(当然应该算2个丢失的字符)
我想尽可能高效地填充行,并尽可能长时间地使用所有 255 个字符。
字符串的顺序无关紧要。
然后,我想返回所有这些连接线的列表。
我知道基本的:
', '.join(my_list_of_strings)
然后最多拆分到 255 个字符以下,但这不是我需要的效率。
如果有一个好的 CSV 解决方案,我也接受(只是逗号分隔的字符串,最大行大小为 255)
编辑:
Textwrap 可以做到这一点,但没有我想要的那么智能:
我的问题文本为字符串,宽度为 20char:
print textwrap.fill(my_text, width=20)
I'm looking for a
way to make lines
out of a big list of
strings. String
length could be from
4 characters up to
20. The line size
maximum is 255
characters.
我想要的是这个:
I'm looking for a to
way make lines a big
out of list of could
strings. String from
length be characters
4 up to 20. The line
size maximum is 255
characters.
【问题讨论】:
-
我不能 100% 确定您在问什么,但请查看 textwrap 模块。
-
所以你想以这样一种方式重新排序字符串,以尽量减少行数而不超过 255 个字符?
-
在第二次阅读时,这听起来像 bin packing problem,这是 NP 难的。如果您发现一种算法在所有输入上都能快速运行,请务必拿起您的Millennium Prize。
-
@schwobaseggl,基本上是的。我想转换那个大的字符串列表并将这些字符串加入 X 行中,我想尽量保持 X 尽可能低。
-
@Kevin,我会研究那个模块。
标签: python string python-2.7 concatenation