我有一个.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岁,西班牙\ n
卡罗琳,37岁,法国\ n
克莱尔,32岁,瑞典\ n
答案 0 :(得分:2)
你不需要分割线,因为第一个单词的第一个字符是该行的第一个字符:
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)
答案 1 :(得分:0)
您可以使用CSV阅读器和编写器,并从列表中访问要大写的元素。
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