Python: 如何将 .txt 文件的第一列大写。

Python: How to capitalize the first column of a .txt file.

我有一个 .csv 格式的 .txt 文件。我正在考虑 .capitalize 第一栏中文本的最佳方式。

.capitalize()是一个字符串方法,所以我考虑了以下;我需要打开文件,将数据转换为字符串列表,将所需的单词大写,最后将数据写回文件。

为此,我做了以下工作:

newGuestList = []
with open("guestList.txt","r+") as guestFile :
guestList = csv.reader(guestFile)
for guest in guestList :
    for guestInfo in guest :
        capitalisedName = guestInfo.capitalize()
        newGuestList.append(capitalisedName)

给出输出:
[‘Peter’, ‘35’, ‘ spain’, ‘Caroline’, ‘37’, ‘france’, ‘Claire’,’32’, ‘ sweden’]

问题:

首先;为了将这个新列表写回文件,我需要将其转换为字符串。我可以使用 .join 方法实现这一点。但是,如何在每三个单词(国家/地区)之后引入换行符 \n,以便每位客人在文本文件中都有自己的行?

其次;这种嵌套 for loops 等方法看起来很复杂,有没有更简洁的方法?

我的 .txt 文件: 彼得,35 岁,spain\n 卡罗琳,37 岁,france\n 克莱尔,32 岁,sweden\n

您不需要拆分行,因为第一个单词的第一个字符就是该行的第一个字符:

with open("lst.txt","r") as guestFile :
    lines=guestFile.readlines()
    newlines=[line.capitalize() for line in lines]
with open("lst.txt","w") as guestFile :
    guestFile.writelines(newlines)   

您可以只使用 CSV reader 和 writer 并从列表中访问您想要大写的元素。

import csv
import os

inp = open('a.txt', 'r')
out = open('b.txt', 'w')

reader = csv.reader(inp)
writer = csv.writer(out)

for row in reader:
    row[0] = row[0].capitalize()
    writer.writerow(row)

inp.close()
out.close()

os.rename('b.txt', 'a.txt') # if you want to keep the same name