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

时间:2016-01-10 20:24:04

标签: python string text multiple-columns

我有一个.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

2 个答案:

答案 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