我有一个像这样的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
任何线索?
答案 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打印到文件中来生成具有所需结构的新文件。