Python长字符串到x个字符长行的对正文本

2024-09-28 21:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

作为一个作业,我必须接收一个长字符串的文本,然后输出它与每一行x个字符长对齐。 目前我尝试使用的方法不起作用,我也不知道为什么,它只是陷入了一个无限循环。你知道吗

我将感谢一些帮助调试我的代码。你知道吗

代码:

words = 'Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui. Cras ultricies mi eu turpis hendrerit fringilla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In ac dui quis mi consectetuer lacinia.'.split()
max_len = 60
line = ''
lines = []
for word in words:
    if len(line) + len(word) <= max_len:
        line += (' ' + word)
    else:
        lines.append(line.strip())
        line = ''

import re
def JustifyLine(oline, maxLen):
    if len(oline) < maxLen:
        s = 1
        nline = oline
        while len(nline) < maxLen:
            match = '\w(\s{%i})\w' % s
            replacement = ' ' * (s + 1)
            nline = re.sub(match, replacement, nline, 1)
            if len(re.findall(match, nline)) == 0:
                s = s + 1
                replacement = s + 1
            elif len(nline) == maxLen:
                return nline
    return oline

for l in lines[:-1]:
    string = JustifyLine(l, max_len)
    print(string)

Tags: inlenlinemimaxlenametsitquam
2条回答

您的主要问题是,您正在用更多的空格替换字母空格letter,删除它两边的字母。所以你的线路不会变长,循环也不会终止。你知道吗

将字母放入它们自己的组中,并向替换字符串添加引用(例如,\1)。你知道吗

斯蒂芬的回答给你的比我给你的要多。你知道吗

对未来的建议:

  1. 找出什么循环没有终止。e、 g.向可疑循环添加打印语句。每个人都有不同的性格。你知道吗
  2. 打印出循环条件的键值,并检查它们是否朝向正确的方向。在本例中,是nline的长度。如果它不是每次都在增加,你需要担心它不会终止。你知道吗
  3. 在拥有两个循环出口(循环上的条件和返回)之前,请仔细考虑,这会使对行为的推理变得更加困难。你知道吗

相关问题 更多 >