简体   繁体   中英

Python: Capitalize every sentence from a txt file retaining the format of file

I want to capitalize on every first word of a sentence from a text file. But after paragraph change, python reads \n in starting of String which changes the format of the txt file. I want to retain the format while making all the first letters of the sentence into capital.

def readfile(filepath):
    with open(filepath) as f:
        lines = f.read()
    print(lines)
    return lines


def puntuate():
    list_of_read_line = readfile(filename)
    list_of_read_line = [x.replace('\n', "") for x in list_of_read_line]
    list_of_read_line = [x.strip() for x in list_of_read_line]
    list_of_read_line = [x.capitalize() for x in list_of_read_line]
    print(list_of_read_line)

not sure I understood your exact requirements...but you could try this, which keeps the formatting and capitalizes the first word of each sentence:

import re

data = """
lorem ipsum dolor sit amet, consectetur adipiscing elit. vestibulum consequat, velit id mattis porttitor, 
arcu mauris semper libero, at pellentesque ante leo ac massa. vestibulum ultricies eleifend sodales. mauris 
dapibus magna id nisl vestibulum venenatis. etiam id ullamcorper tortor, nec lacinia odio. nam ut gravida magna. 
cras maximus mauris non diam volutpat, sed rutrum mauris euismod. donec in commodo ex, eu efficitur elit. curabitur 
non bibendum felis, in aliquet mi. in ultricies metus nulla, id euismod augue hendrerit nec. ut non sapien nunc. 
etiam pulvinar at sem vitae eleifend. proin vulputate congue tellus facilisis vulputate.

duis fringilla sem non congue molestie. pellentesque magna sem, pretium in velit ac, fermentum semper elit. 
integer urna felis, ornare et feugiat tempus, volutpat id tortor. donec posuere dui at leo cursus, sollicitudin 
fermentum ante tristique. aliquam erat volutpat. nullam quis pharetra orci. nulla eros diam, malesuada 
vitae ullamcorper sed, venenatis vitae justo. in vel enim ut ligula accumsan volutpat. nunc vitae lorem feugiat, 
vulputate velit nec, dignissim ex. quisque blandit lorem nisi, a vehicula mauris eleifend vulputate. phasellus 
sit amet rutrum magna, elementum venenatis mauris. donec fringilla est a convallis tempor. aenean vestibulum 
imperdiet ante, in auctor magna tempor sed. nunc sapien erat, venenatis nec odio a, lobortis suscipit ipsum. 
donec placerat sagittis posuere. sed accumsan purus sed laoreet tincidunt.

etiam porta ac enim nec cursus. donec ullamcorper neque tellus, et placerat risus ornare vitae. donec 
euismod lobortis metus. proin ullamcorper consectetur nisl a pharetra. cras ullamcorper et sapien id lacinia. 
donec consequat ante eget ligula commodo, nec malesuada tellus rutrum. fusce mattis maximus felis vel aliquam. 
morbi id laoreet mi. ut a auctor urna. morbi non vehicula lacus. mauris non aliquet augue, sed pharetra sapien.
"""


print(re.sub(r'(?:^|(?<=\.))(\s*.)', lambda match: r'{}'.format(match.group(1).upper()), data))

generates:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consequat, velit id mattis porttitor, 
arcu mauris semper libero, at pellentesque ante leo ac massa. Vestibulum ultricies eleifend sodales. Mauris 
dapibus magna id nisl vestibulum venenatis. Etiam id ullamcorper tortor, nec lacinia odio. Nam ut gravida magna. 
Cras maximus mauris non diam volutpat, sed rutrum mauris euismod. Donec in commodo ex, eu efficitur elit. Curabitur 
non bibendum felis, in aliquet mi. In ultricies metus nulla, id euismod augue hendrerit nec. Ut non sapien nunc. 
Etiam pulvinar at sem vitae eleifend. Proin vulputate congue tellus facilisis vulputate.

Duis fringilla sem non congue molestie. Pellentesque magna sem, pretium in velit ac, fermentum semper elit. 
Integer urna felis, ornare et feugiat tempus, volutpat id tortor. Donec posuere dui at leo cursus, sollicitudin 
fermentum ante tristique. Aliquam erat volutpat. Nullam quis pharetra orci. Nulla eros diam, malesuada 
vitae ullamcorper sed, venenatis vitae justo. In vel enim ut ligula accumsan volutpat. Nunc vitae lorem feugiat, 
vulputate velit nec, dignissim ex. Quisque blandit lorem nisi, a vehicula mauris eleifend vulputate. Phasellus 
sit amet rutrum magna, elementum venenatis mauris. Donec fringilla est a convallis tempor. Aenean vestibulum 
imperdiet ante, in auctor magna tempor sed. Nunc sapien erat, venenatis nec odio a, lobortis suscipit ipsum. 
Donec placerat sagittis posuere. Sed accumsan purus sed laoreet tincidunt.

Etiam porta ac enim nec cursus. Donec ullamcorper neque tellus, et placerat risus ornare vitae. Donec 
euismod lobortis metus. Proin ullamcorper consectetur nisl a pharetra. Cras ullamcorper et sapien id lacinia. 
Donec consequat ante eget ligula commodo, nec malesuada tellus rutrum. Fusce mattis maximus felis vel aliquam. 
Morbi id laoreet mi. Ut a auctor urna. Morbi non vehicula lacus. Mauris non aliquet augue, sed pharetra sapien.

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