1

我正在尝试解析文件。目前,我有这个文件:

word1 52345325
word2 12312314
word3 7654756
word4 421342342

我正在尝试将这些单词存储word1 word2 word3word4一个数组中,并将与这些单词相邻的数字存储到另一个数组中。

所以如果我说a[0]我应该得到word1,如果我说b[0]我应该得到52345325等等。

我正在考虑制作一个键值对字典对象,但此时可能有点复杂,因为我刚刚进入 python。

我目前正在这样做,但当然,它不起作用:P

def csvStringParser():
    a = {}
    b = {}
    i = 0
    f = open('/Users/settingj/Desktop/NOxMultiplier.csv')
    for line in f.readlines():
    reader = csv.reader(line.split('\t'), delimiter='\t')
        for row in reader:
            #print '\t'.join(row)                                                                                                                                                                                                                                             
            #print i                                                                                                                                                                                                                                                          
            a[i] = '\t'.join(row)
            b[i] = '\t'.join(row)
            print a[i]
            print b[i]
            i+=1

老实说,这是我使用 python 的第一个小时。我可以在 C++ 中轻松地做到这一点,但我目前只是想学习 python 以了解它比 C++ 更大的好处/简单性。

4

3 回答 3

2

好吧,其实只有一行代码:

a, b = zip(*(map(lambda x: x.rstrip('\n\r').split('\t'), open('file.csv').readlines())))

一些链接:

于 2013-08-13T00:22:31.227 回答
2
import csv

a = {}
with open('/Users/settingj/Desktop/NOxMultiplier.csv') as f:
    reader = csv.reader(f, delimiter='\t')
    for row in reader:
        a[row[0]] = row[1]
print a

对于两个数组:

a = []
b = []
with open('/Users/settingj/Desktop/NOxMultiplier.csv') as f:
    reader = csv.reader(f, delimiter='\t')
    for row in reader:
        a.append(row[0])
        b.append(row[1])
print a
print b

甚至与 zip 类似的解决方案:

with open('/Users/settingj/Desktop/NOxMultiplier.csv') as f:
    a, b = zip(*csv.reader(f, delimiter='\t'))
print a
print b
于 2013-08-13T00:24:35.820 回答
1

这是我的实现,它使用您描述的输入完成您所描述的操作:#!/usr/bin/python

def csvStringParser(filename):
    a = []
    b = []
    f = open(filename)
    for line in f.readlines():
        tok = line.split()
        a.append(tok[0])
        b.append(tok[1])
    print a
    print b

if __name__=="__main__":
    csvStringParser('temp.txt')

您可以使用其他分隔符,split()例如split('\t')使用制表符分隔符,但您可能不需要 csv 包来描述您所描述的内容。

于 2013-08-13T00:30:46.800 回答