python - 拆分和编辑 CSV 列并按字母顺序排列

标签 python mysql sorting csv dictionary

我为一个包含多列和数千行数据的 CSV 文件开发了以下 .py 文件。这是我到目前为止的脚本:

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]
    outcsv.writerow(rowOutput)
    rowNum += 1

infile.close()
outfile.close()

基本上,namedata 列的信息是为每个人的全名呈现的,例如“Smith, John”。 姓在前,名在后。我需要将姓氏和名字分开,并在输出中为每个名字创建一列 - 没有已经存在的逗号或引号。然后,我还需要按字母顺序在姓氏列中显示信息。我知道 sort() 将以某种方式用于按字母顺序排序,但我不知道拆分。

我已经走到这一步了,但不知道如何拆分 namedata 列 - 我在这里读到一个关于类似问题的解释,但它太复杂了,老实说我无法理解。简单的解释会很棒,谢谢!

EDIT: Original File Data (Simplified version for illustration) -
data1   data2   namedata               data4    data5
0         3     Smith, Mr John           m       22
1         1     McMahan, Ms Sally        f       38
1         3     Emmit, Mr Brandon        f       26

Output csv File (Simplified version for illustration) -
lastname    firstname      data2    data4
Emmit       Mr Brandon       3        m
McMahon     Ms Sally         1        f
Smith       Mr John          3        f

希望对您有所帮助!

最佳答案

如果我没理解错的话,你有这样一个字段:

name = "Smith, John"

但是你想要一个像这样的列表:

["John", "Smith"]

为此,您可以做一些事情:

first_last = names.split(', ')
first_last.reverse()
print first_last

对于排序,肯定有很多方法,这可能不是最优雅的,但你可以创建一个字典,对键集进行排序,然后打印出相应的值:

phonebook = dict()

for row in csv:
    last_name = get_last_name()
    phonebook[last_name] = row

lastnames = phonebook.keys()
lastnames.sort()
for key in lastnames:
    print phonebook[key]

后者几乎批发自 https://stackoverflow.com/a/13990710/695787 .不过,重复的姓氏可能会失败。

关于python - 拆分和编辑 CSV 列并按字母顺序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37129341/

相关文章:

php - 不知道如何从 mysql 中回显所选数据

sql - MySQL foreach?

java - 这个归并排序有什么问题呢?

python - 覆盖从另一个模块导入的函数中的全局变量

python - 如何将轴标签移动到 matplotlib 中的箭头附近

python - PySpark 数据框中的日期差异

javascript - 我需要对这些数字进行排序,但它在 JavaScript 中不起作用

python - 动态拆分Python中的复杂字符串

java - 将 blob 转换为图像流并将其分配给 jLabel

java - 试图理解快速排序的复杂性