【发布时间】:2012-04-15 15:01:30
【问题描述】:
我想确保我只打印最多 80 个字符长的行,但我有一个字符串 s 可以比这更短和更长。所以我想把它分成几行而不分割任何单词。
长字符串示例:
s = "This is a long string that is holding more than 80 characters and thus should be split into several lines. That is if everything is working properly and nicely and all that. No mishaps no typos. No bugs. But I want the code too look good too. That's the problem!"
我可以想出办法来做到这一点,例如:
words = s.split(" ")
line = ""
for w in words:
if len(line) + len(w) <= 80:
line += "%s " % w
else:
print line
line ="%s " % w
print line
同样,我可以在 while 循环中迭代地使用 s.find(" "):
sub_str_left = 0
pos = 0
next_pos = s.find(" ", pos)
while next_pos > -1:
if next_pos - sub_str_left > 80:
print s[sub_str_left:pos-sub_str_left]
sub_str_left = pos + 1
pos = next_pos
next_pos = s.find(" ", pos)
print s[sub_str_left:]
这些都不是很优雅,所以我的问题是,是否有更酷的 pythonic 方式来做到这一点? (也许使用正则表达式左右。)
【问题讨论】:
-
您的问题与我几天前提出的问题相似。 stackoverflow.com/questions/9894983/…
-
我错过了那个搜索旧帖子的帖子,猜想是因为我在寻找 splitting 而它谈到 wrapping,但它们是相似的。
-
嗯,从技术上讲,这称为包装。
标签: python string split word word-wrap