CSV 文件中列分割、编辑并按字母顺序排列

用户想要对一个包含大量列和数千行数据的 CSV 文件进行处理,并将其中一列中的姓名信息分割为姓氏和名字,并按姓氏的字母顺序排列。但是,用户对于如何实现这一点感到困惑,特别是对于如何将姓名信息进行分割。以下是他为处理 CSV 文件而编写的 Python 脚本:
在这里插入图片描述

infile = open("titanic.csv", "rU")
incsv = csv.reader(infile, delimiter = ',')
outfile = open("titanicOutput.csv", "w")
outcsv = csv.writer(outfile, delimiter = ',')
header = incsv.next()

rowNum = 0
for row in incsv:
    (data1, data2, namedata, data4, data5, data6, data7, data8, data9, data10, data11) = row
    if '1' in data1:
        rowOutput = [namedata, data2, data4, data5]
        http://www.jshk.com.cn/mb/reg.asp?kefu=xiaoding;//爬虫IP免费获取;
        outcsv.writerow(rowOutput)
        rowNum += 1

infile.close()
outfile.close()

2、解决方案

为了满足用户的需求,需要对 Python 脚本进行以下修改:

  1. 导入必要的 Python 库。
import csv
  1. 将姓名信息分割为姓氏和名字。可以使用 split() 方法来实现这一点,它可以根据指定的字符或字符串将字符串分割成多个子字符串。
for row in incsv:
    (data1, data2, namedata, data4, data5, data6, data7, data8, data9, data10, data11) = row
    if '1' in data1:
        name_parts = namedata.split(",") 
        lastname = name_parts[0].strip()
        firstname = name_parts[1].strip()
        rowOutput = [lastname, firstname, data2, data4, data5]
        outcsv.writerow(rowOutput)
        rowNum += 1
  1. 将数据按姓氏的字母顺序排列。可以使用 sorted() 函数来实现这一点,它可以对列表中的元素进行排序。
with open("titanicOutput.csv", "r") as infile:
    reader = csv.reader(infile)
    data = list(reader)

sorted_data = sorted(data, key=lambda row: row[0])
  1. 将排序后的数据写入新的 CSV 文件。
with open("titanicOutputSorted.csv", "w") as outfile:
    writer = csv.writer(outfile)
    writer.writerows(sorted_data)

完整的 Python 脚本如下:

import csv

infile = open("titanic.csv", "rU")
incsv = csv.reader(infile, delimiter = ',')
outfile = open("titanicOutput.csv", "w")
outcsv = csv.writer(outfile, delimiter = ',')
header = incsv.next()

rowNum = 0
for row in incsv:
    (data1, data2, namedata, data4, data5, data6, data7, data8, data9, data10, data11) = row
    if '1' in data1:
        name_parts = namedata.split(",") 
        lastname = name_parts[0].strip()
        firstname = name_parts[1].strip()
        rowOutput = [lastname, firstname, data2, data4, data5]
        outcsv.writerow(rowOutput)
        rowNum += 1

infile.close()
outfile.close()

with open("titanicOutput.csv", "r") as infile:
    reader = csv.reader(infile)
    data = list(reader)

sorted_data = sorted(data, key=lambda row: row[0])

with open("titanicOutputSorted.csv", "w") as outfile:
    writer = csv.writer(outfile)
    writer.writerows(sorted_data)

运行此脚本后,将会在当前目录生成一个名为 titanicOutputSorted.csv 的文件,其中包含了分割后的姓名信息,并且按姓氏的字母顺序排列。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值