Python 更改字符串中的单词以使文本文件大写

Python 更改字符串中的单词以使文本文件大写,python,Python,为了修复一堆全大写文本文件,我编写了一个脚本: 降低所有字符并大写每行的第一个字和句点后的第一个字 将城市和国家名称列表中的所有单词大写(来自另一个文本文件) def lowit(行): line=line.lower() 句子=行。拆分('.')) 句子2=[句子[0]。大写()+句子[1:]表示句子中的句子] string2='.'。连接(句子2) 返回线2 def capcico(行,所有关键字): allWords=行分割(“”) 原始=行分割(“”) 对于i,枚举中的单词(所有单词):

为了修复一堆全大写文本文件,我编写了一个脚本:

  • 降低所有字符并大写每行的第一个字和句点后的第一个字
  • 将城市和国家名称列表中的所有单词大写(来自另一个文本文件)
  • def lowit(行):
    line=line.lower()
    句子=行。拆分('.'))
    句子2=[句子[0]。大写()+句子[1:]表示句子中的句子]
    string2='.'。连接(句子2)
    返回线2
    def capcico(行,所有关键字):
    allWords=行分割(“”)
    原始=行分割(“”)
    对于i,枚举中的单词(所有单词):
    单词=单词。替换(',','')
    单词=单词。替换('.','')
    单词=单词。替换(“;”,“”)
    如果所有关键字中有单词:
    原件[i]=原件[i]。大写()
    返回“”。加入(原始)
    def main():
    dfile=open('fixed.txt','w')
    f=打开('allist.txt','r')
    allKeywords=f.read().split('\n')
    以open('ulm.txt','r')作为文件输入:
    对于文件输入中的行:
    low_线=lowit(线)
    写入('\n'+capcico(低位线,所有关键字))
    dfile.close()
    如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
    main()
    
    它是可行的,但问题是,如果同一行中有多个城市/国家,它就不会将其资本化:

    德国伍尔滕堡镇

    更改:

    德国伍尔滕堡镇

    有什么问题吗?
    因为“德国”实际上是“德国”\n。 去掉单词的下线

    words = words.replace(',', '')
    words = words.replace('.', '')
    words = words.replace(';', '')
    
    # Add in this line to strip the EOL
    words = words.rstrip('\r\n') 
    

    这似乎不仅仅是改变字母的大小写,为什么要改变城市和县的位置呢?(虽然伍尔滕堡是一个地区/州,而不是一个城市)为什么要导入
    chain
    string
    但从不使用它们?好的,我会解决这个问题。还修复了位置,这是一个打字错误。。。谢谢你解决了这个问题,谢谢你!我知道你应该能够阅读代码,但是如果你能解释一下你做了什么,那会很有帮助。不是批评,只是有助于理解。谢谢,但做得很好。你的建议把段落的第一个字用小写。。。
    #Input
    fileinput = open("ulm.txt").read()
    ##Input lower
    filow = fileinput.lower()
    
    #Keywords
    allKeywords = open("allist.txt").read().split("\n")
    for kw in allKeywords:
        filow = filow.replace(kw.strip().lower(), kw.capitalize())
    
    #Dots
    fidots = filow.split(".")
    for i,d in enumerate(fidots):
        c = d.strip().capitalize()
        dc = d.replace(c.lower(), c)
        fidots[i] = dc
    
    #Result
    dfile = open("fixed.txt", "w")
    result = ".".join(fidots)
    dfile.write(result)
    dfile.close()