简体   繁体   中英

Python line wrap, line height and letter spacing

I am working with multiple text documnets that I want to consistantly format, and set the line height, letter spacing and line wrap after 50 characters in python, doe anybody know how to do this in python,

Thanks

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. 

You can do like this.

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)

This is a solution:

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('#', ' ')

Without the tricking with the spaces the result won't be a rectangle-like shape. But this is a trick, there must be a setting to do it nicer.

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. 

Update:

So Thanks to Gautam Jangid solution montyboi got the answer,

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')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM