我有一个练习,我有两个文本,“左”和“右”。
我需要创建一个函数,让它们以给定的宽度作为参数并排显示,所有这些都使用itertools和textwrap。
这是我的代码:
import textwrap
import itertools
def sidebyside(left,right,width=79):
width = round((width+1)/2)
leftwrapped = textwrap.wrap(left,width = width-1)
for i in range(0,len(leftwrapped)):
leftwrapped[i] = leftwrapped[i].ljust(width)
rightwrapped = textwrap.wrap(right,width = width-1)
for i in range(0,len(rightwrapped)):
rightwrapped[i] = rightwrapped[i].ljust(width)
pipes = ["|"]*max(len(leftwrapped),len(rightwrapped))
paragraph = itertools.zip_longest(leftwrapped,pipes,rightwrapped, fillvalue="".ljust(width))
result = ""
for a in paragraph:
result = result + a[0] + a[1] + a[2] + "\n"
return(result)
这里有一个“左”的示例&;“对”:
left = (
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
"Sed non risus. "
"Suspendisse lectus tortor, dignissim sit amet, "
"adipiscing nec, utilisez sed sin dolor."
)
right = (
"Morbi venenatis, felis nec pretium euismod, "
"est mauris finibus risus, consectetur laoreet "
"sem enim sed arcu. Maecenas sit amet eleifend sem. "
"Nullam ac libero metus. Praesent ac finibus nulla, vitae molestie dolor."
" Aliquam vestibulum viverra nisl, id porta mi viverra hendrerit."
" Ut et porta augue, et convallis ante."
)
我的问题是,我得到了一些间距问题,即:对于第一行,对于给定的长度20,我有以下输出:
'Lorem |Morbi ven '
但我需要这个输出:
'Lorem |Morbi ven'
发现它,我的round函数不好,我必须做两个宽度,第一个是除法的圆,第二个是
width - round(width/2)
的结果。谈话便宜,代码更好:
从itertools导入zip\u 导入文本包装
相关问题 更多 >
编程相关推荐