用Python解析
我正在尝试分析一个文件。目前,我有以下文件:用Python解析,python,parsing,csv,readlines,Python,Parsing,Csv,Readlines,我正在尝试分析一个文件。目前,我有以下文件: word1 52345325 word2 12312314 word3 7654756 word4 421342342 我试图将word1word2word3和word4存储到一个数组中,并将与这些单词相邻的数字存储到另一个数组中 所以如果我说a[0]我应该得到word1,如果我说b[0]我应该得到52345325,依此类推 我曾考虑创建一个键值对字典对象,但现在可能有点复杂,因为我刚刚开始接触python 我目前正在这样做,但当然,它不起作用:p
word1 52345325
word2 12312314
word3 7654756
word4 421342342
我试图将word1
word2
word3
和word4
存储到一个数组中,并将与这些单词相邻的数字存储到另一个数组中
所以如果我说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++更大的好处/简单性。 < P> OK,实际上,只有一行代码:
a, b = zip(*(map(lambda x: x.rstrip('\n\r').split('\t'), open('file.csv').readlines())))
一些链接:
- 好的,事实上,只有一行代码:
a, b = zip(*(map(lambda x: x.rstrip('\n\r').split('\t'), open('file.csv').readlines())))
一些链接:
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
甚至是类似的拉链解决方案:
with open('/Users/settingj/Desktop/NOxMultiplier.csv') as f:
a, b = zip(*csv.reader(f, delimiter='\t'))
print a
print b
对于两个阵列:
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
甚至是类似的拉链解决方案:
with open('/Users/settingj/Desktop/NOxMultiplier.csv') as f:
a, b = zip(*csv.reader(f, delimiter='\t'))
print a
print b
以下是我的实现,它实现了您所描述的输入: #!/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包来描述所描述的内容。以下是我的实现,它对您描述的输入进行了描述:
#!/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包来描述您所描述的内容。哈哈,太棒了。。。大坝容易。。。你得到了复制和粘贴代码的投票,但我仍然想知道,我如何创建两个数组,而不是像我在问题中解释的那样一个一个映射到另一个的数组?最后,我觉得第一个答案是我最终想要的目标,但我无法使用它..添加了两个数组示例。哈哈,太棒了。。。大坝容易。。。你得到了复制和粘贴代码的投票,但我仍然想知道,我如何创建两个数组,而不是像我在问题中解释的那样创建一个映射到另一个的数组?最后,我觉得第一个答案是我最终想要的目标,但我不能使用它..添加了两个数组示例。这基本上与已接受的答案相同,但由于它有效,您可以获得投票:)是的,我在发布我的答案后看到了已接受的答案。很高兴你得到了一个工作代码示例。这基本上与公认的答案相同,但你得到了一个投票,因为它是有效的:)是的,我在发布我的答案后看到了公认的答案。很高兴您得到了一个工作代码示例。您的答案非常适合于字典解决方案,如我在问题中指定的方式,并且非常简洁:)我喜欢它。您的答案非常适合于字典解决方案,如我在问题中指定的方式,并且非常简洁:)我喜欢它。