复制.txt文件并大写每个单词的首字母,然后写入新文件

时间:2019-05-29 10:31:17

标签: python

我正在制作一个小的脚本,该脚本打开file_name并将其副本写入目标.txt文件,但是每个单词的第一个字母都大写,并且所有空格仅由单个空格代替。我正在尝试使用.capitalize方法或.capwords方法来做到这一点。

def capitalise_words(file_name, destination):
    with open(file_name) as wordfile:
        text_str = wordfile.read()
        capped = text_str.capwords()

    with open(destination, "w") as writefile:
        writefile.write(capped)

我不知道该如何工作。如果我将每个单词的第一个字符切成一个列表并使用.capitalize将其大写,也许会切成薄片?

4 个答案:

答案 0 :(得分:2)

您需要导入string模块,然后才能使用string.capwords()

import string

...

text_str = wordfile.read()
capped = string.capwords(text_str)

其原因是capwords()不是str对象的方法,它是string模块中的辅助函数。

因此,您的原始固定内容:

import string


def capitalise_words(file_name, destination):
    with open(file_name) as wordfile:
        text_str = wordfile.read()
        capped = string.capwords(text_str)

    with open(destination, "w") as writefile:
        writefile.write(capped)

编辑:
如果您不想导入任何内容,则只需使用:

text_str = wordfile.read()
capped = ' '.join(word.capitalize() for word in text_str.split())

这正是string.capwords()实际正在做的事情。

答案 1 :(得分:1)

使用str.title()

例如:

def capitalise_words(file_name, destination):
    with open(file_name) as wordfile:
        text_str = wordfile.read()
        capped = text_str.title()

    with open(destination, "w") as writefile:
        writefile.write(capped)

要替换所有换行符,请使用

capped = " ".join(word for word in text_str.splitlines()).title()

答案 2 :(得分:0)

您可以使用regex将所有空格替换为字符串中的单个空格,并使用.title()将每个单词的首字母大写。

尝试一下

import re

def capitalise_words(file_name, destination):
    with open(file_name) as wordfile:
        text_str = wordfile.read()
        capped = re.sub(' +', ' ', text_str).title()

    with open(destination, "w") as writefile:
        writefile.write(capped)

例如:

>>> text_str = 'this   string    is created to      testing   '
>>> re.sub(' +', ' ', text_str).title()
'This String Is Created To Testing '

答案 3 :(得分:0)

假设:

raw_text="""
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"""

遍历单词列表时可以使用“ capitalize()”。

txt_split = raw_text.split()

for i, word in enumerate(txt_split):
    txt_split[i] = word.capitalize()

txt_output = ' '.join(txt_split)

print(txt_output)

输出:

  

Lorem Ipsum Dolor Sit Amet,Consectetur Adipisicing Elit,Sed Do Eiusmod Tempor Incididunt Ut Labore Et Dolore Magna Aliqua。 Enim Ad Minim Veniam,Quis Nostrud锻炼Ullamco Laboris Nisi Uli Aliquip Ex Ea Commodo结果。 Duis Aute Irure Dolor在Voluptate Velit Esse Cillum Dolore Eu Fugiat Nulla Pariatur中的Reprehenderit。 Sint Occaecat Cupidatat非偶然事件,Culpa Qui Officia Deserunt Mollit Anim ID Est Laborum的Sunt。

string.capwords()是包装在帮助器函数中以方便使用的同一东西