如何使用python更改CSV文件中单词的顺序?

时间:2014-03-05 11:27:39

标签: python csv

我有一个像这样的csv文件

Abc  12
bcd 123
bsd 45
bfs 34

我需要将此文件更改为
数字第一种形式。

12 abc
 123 bcd
45  bsd
 34 dfs

以这种形式 我做了什么。

import csv
with open('name.csv', 'rb') as f:
    reader = csv.reader(f, delimiter='\t')
    file = open("names.txt", "w")
    for row in reader:
        for j in range(0 ,len(row)):
            file.write(row[j])


file.close()

当前输出

12
123
34

预期输出

12 abc
 123 bcd
45  bsd
 34 dfs

任何线索?

2 个答案:

答案 0 :(得分:1)

简单:

import csv

with open('name.csv', 'rb') as f:
    reader = csv.reader(f, delimiter='\t')
    with open("names.txt", "w") as o:
        writer = csv.writer(o, delimiter='\t')
        for row in reader:
            writer.writerow((row[1], row[0]))

编辑:

如果您可以使用awk,这将更加简单:

$ awk -F '\t' 'OFS="\t" {print $2, $1}' < name.csv 
  • -F '\t':输入中的字段由制表符分隔
  • OFS="\t":输出中的字段也应以制表符分隔
  • {print $2, $1}:对于输入中的每一行,打印第二个和第一个字段

答案 1 :(得分:0)

您可以从文件中读取每一行(使用 readlines())并使用 strip()(删除行尾字符)和 split()函数(删除空格和分隔实体)使用默认参数将每行转换为临时数组:

例如

FileHandle = open("file.txt", 'r')
LinesInFile = FileHandle.readlines()

for line in LinesInFile:
    Arr = line.strip().split() #This will give Arr = ["Abc", "12"] for line = "Abc 12"

在此之后,您可以使用列表 pop()方法获取最后一个元素并将其打印到文件中,最终反转顺序并将数字放在单词之前。

例如

Num = Arr.pop() #this will get you 12
Wrd = Arr.pop() #this will get you "Abc"

您可以在循环中运行上述逻辑(如上面的代码片段所示),通过在同一循环中将Num和Wrd打印到文件中来生成具有所需结构的新文件。