Python:将txt文件中的每个句子大写,保留文件格式
Python: Capitalize every sentence from a txt file retaining the format of file
我想利用文本文件中句子的每个第一个单词。但是在段落更改之后,python 在字符串的开头读取 \n ,这改变了 txt 文件的格式。我想保留格式,同时将句子的第一个字母全部大写。
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)
不确定我是否理解您的确切要求...但您可以试试这个,它会保留格式并将每个句子的第一个单词大写:
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))
生成:
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.
我想利用文本文件中句子的每个第一个单词。但是在段落更改之后,python 在字符串的开头读取 \n ,这改变了 txt 文件的格式。我想保留格式,同时将句子的第一个字母全部大写。
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)
不确定我是否理解您的确切要求...但您可以试试这个,它会保留格式并将每个句子的第一个单词大写:
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))
生成:
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.