Python 换行、行高和字母间距
Python line wrap, line height and letter spacing
我正在处理多个文本文件,我想在 python 中设置行高、字母间距和 50 个字符后换行,有人知道如何在 python,
谢谢
text.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dignissim, felis dignissim viverra pharetra, metus nisl fermentum urna, dictum lobortis tellus ligula at leo. Integer consequat dolor quis enim ultrices mattis. Aenean nec rutrum est. Nulla facilisi. Praesent non quam sed quam blandit cursus ac quis diam. Sed consectetur viverra sagittis. Integer molestie sed tellus eu porttitor. Etiam eu urna lorem. Sed pharetra ipsum laoreet est rhoncus sagittis. Duis gravida sapien a leo lobortis, ut ullamcorper lorem sagittis. Nulla at est vel felis efficitur tincidunt. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In rhoncus, magna rhoncus tempor malesuada, nibh urna facilisis libero, sed ultricies mauris velit in augue.
你可以这样做。
str_res = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dignissim, felis dignissim viverra pharetra, metus nisl fermentum urna, dictum lobortis tellus ligula at leo. Integer consequat dolor quis enim ultrices mattis. Aenean nec rutrum est. Nulla facilisi. Praesent non quam sed quam blandit cursus ac quis diam. Sed consectetur viverra sagittis. Integer molestie sed tellus eu porttitor. Etiam eu urna lorem. Sed pharetra ipsum laoreet est rhoncus sagittis. Duis gravida sapien a leo lobortis, ut ullamcorper lorem sagittis. Nulla at est vel felis efficitur tincidunt. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In rhoncus, magna rhoncus tempor malesuada, nibh urna facilisis libero, sed ultricies mauris velit in augue. "
i = 0
res = ""
line_length = 50
space_size = 2
for c in str_res:
i += 1
if c == " ":
res += " " * space_size
else:
res += c
if i > line_length:
i = 0
res += "\n"
print(res)
这是一个解决方案:
import textwrap
file_contents = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dignissim, felis dignissim viverra pharetra, metus nisl fermentum urna, dictum lobortis tellus ligula at leo. Integer consequat dolor quis enim ultrices mattis. Aenean nec rutrum est. Nulla facilisi. Praesent non quam sed quam blandit cursus ac quis diam. Sed consectetur viverra sagittis. Integer molestie sed tellus eu porttitor. Etiam eu urna lorem. Sed pharetra ipsum laoreet est rhoncus sagittis. Duis gravida sapien a leo lobortis, ut ullamcorper lorem sagittis. Nulla at est vel felis efficitur tincidunt. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In rhoncus, magna rhoncus tempor malesuada, nibh urna facilisis libero, sed ultricies mauris velit in augue. """
file_contents = file_contents.replace(' ', '#')
wrapper = textwrap.TextWrapper(width=50)
file_contents = wrapper.fill(text=file_contents)
file_contents = file_contents.replace('#', ' ')
如果不使用空格,结果将不会是类似矩形的形状。
但这是一个技巧,必须有一个设置才能做得更好。
print(file_contents)
Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Duis dignissim, felis dignissim viverra pha
retra, metus nisl fermentum urna, dictum lobortis
tellus ligula at leo. Integer consequat dolor quis
enim ultrices mattis. Aenean nec rutrum est. Null
a facilisi. Praesent non quam sed quam blandit cur
sus ac quis diam. Sed consectetur viverra sagittis
. Integer molestie sed tellus eu porttitor. Etiam
eu urna lorem. Sed pharetra ipsum laoreet est rhon
cus sagittis. Duis gravida sapien a leo lobortis,
ut ullamcorper lorem sagittis. Nulla at est vel fe
lis efficitur tincidunt. Class aptent taciti socio
squ ad litora torquent per conubia nostra, per inc
eptos himenaeos. In rhoncus, magna rhoncus tempor
malesuada, nibh urna facilisis libero, sed ultrici
es mauris velit in augue.
更新:
所以感谢 Gautam Jangid 解决方案 montyboi 得到了答案,
f = open('text.txt', 'r')
file_contents = f.read()
iterable = file_contents.replace(" ", "")
separator = " "
str_res = separator.join(iterable)
i = 0
res = ""
line_length = 50
space_size = 3
for c in str_res:
i += 1
if c == " ":
res += " " * space_size
else:
res += c
if i > line_length:
i = 0
res += "\n"
with open('readmee.txt', 'w') as f:
f.write(res)
import docx
my_doc = docx.Document()
my_doc.add_paragraph(res)
my_doc.save("new.docx")
from docx.enum.text import WD_LINE_SPACING
from docx import Document
document = Document('new.docx')
style = document.styles['Normal']
style.paragraph_format.line_spacing = 2
document.save('demo.docx')
我正在处理多个文本文件,我想在 python 中设置行高、字母间距和 50 个字符后换行,有人知道如何在 python,
谢谢
text.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dignissim, felis dignissim viverra pharetra, metus nisl fermentum urna, dictum lobortis tellus ligula at leo. Integer consequat dolor quis enim ultrices mattis. Aenean nec rutrum est. Nulla facilisi. Praesent non quam sed quam blandit cursus ac quis diam. Sed consectetur viverra sagittis. Integer molestie sed tellus eu porttitor. Etiam eu urna lorem. Sed pharetra ipsum laoreet est rhoncus sagittis. Duis gravida sapien a leo lobortis, ut ullamcorper lorem sagittis. Nulla at est vel felis efficitur tincidunt. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In rhoncus, magna rhoncus tempor malesuada, nibh urna facilisis libero, sed ultricies mauris velit in augue.
你可以这样做。
str_res = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dignissim, felis dignissim viverra pharetra, metus nisl fermentum urna, dictum lobortis tellus ligula at leo. Integer consequat dolor quis enim ultrices mattis. Aenean nec rutrum est. Nulla facilisi. Praesent non quam sed quam blandit cursus ac quis diam. Sed consectetur viverra sagittis. Integer molestie sed tellus eu porttitor. Etiam eu urna lorem. Sed pharetra ipsum laoreet est rhoncus sagittis. Duis gravida sapien a leo lobortis, ut ullamcorper lorem sagittis. Nulla at est vel felis efficitur tincidunt. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In rhoncus, magna rhoncus tempor malesuada, nibh urna facilisis libero, sed ultricies mauris velit in augue. "
i = 0
res = ""
line_length = 50
space_size = 2
for c in str_res:
i += 1
if c == " ":
res += " " * space_size
else:
res += c
if i > line_length:
i = 0
res += "\n"
print(res)
这是一个解决方案:
import textwrap
file_contents = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dignissim, felis dignissim viverra pharetra, metus nisl fermentum urna, dictum lobortis tellus ligula at leo. Integer consequat dolor quis enim ultrices mattis. Aenean nec rutrum est. Nulla facilisi. Praesent non quam sed quam blandit cursus ac quis diam. Sed consectetur viverra sagittis. Integer molestie sed tellus eu porttitor. Etiam eu urna lorem. Sed pharetra ipsum laoreet est rhoncus sagittis. Duis gravida sapien a leo lobortis, ut ullamcorper lorem sagittis. Nulla at est vel felis efficitur tincidunt. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In rhoncus, magna rhoncus tempor malesuada, nibh urna facilisis libero, sed ultricies mauris velit in augue. """
file_contents = file_contents.replace(' ', '#')
wrapper = textwrap.TextWrapper(width=50)
file_contents = wrapper.fill(text=file_contents)
file_contents = file_contents.replace('#', ' ')
如果不使用空格,结果将不会是类似矩形的形状。 但这是一个技巧,必须有一个设置才能做得更好。
print(file_contents)
Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Duis dignissim, felis dignissim viverra pha
retra, metus nisl fermentum urna, dictum lobortis
tellus ligula at leo. Integer consequat dolor quis
enim ultrices mattis. Aenean nec rutrum est. Null
a facilisi. Praesent non quam sed quam blandit cur
sus ac quis diam. Sed consectetur viverra sagittis
. Integer molestie sed tellus eu porttitor. Etiam
eu urna lorem. Sed pharetra ipsum laoreet est rhon
cus sagittis. Duis gravida sapien a leo lobortis,
ut ullamcorper lorem sagittis. Nulla at est vel fe
lis efficitur tincidunt. Class aptent taciti socio
squ ad litora torquent per conubia nostra, per inc
eptos himenaeos. In rhoncus, magna rhoncus tempor
malesuada, nibh urna facilisis libero, sed ultrici
es mauris velit in augue.
更新:
所以感谢 Gautam Jangid 解决方案 montyboi 得到了答案,
f = open('text.txt', 'r')
file_contents = f.read()
iterable = file_contents.replace(" ", "")
separator = " "
str_res = separator.join(iterable)
i = 0
res = ""
line_length = 50
space_size = 3
for c in str_res:
i += 1
if c == " ":
res += " " * space_size
else:
res += c
if i > line_length:
i = 0
res += "\n"
with open('readmee.txt', 'w') as f:
f.write(res)
import docx
my_doc = docx.Document()
my_doc.add_paragraph(res)
my_doc.save("new.docx")
from docx.enum.text import WD_LINE_SPACING
from docx import Document
document = Document('new.docx')
style = document.styles['Normal']
style.paragraph_format.line_spacing = 2
document.save('demo.docx')