用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包来描述您所描述的内容。

      哈哈,太棒了。。。大坝容易。。。你得到了复制和粘贴代码的投票,但我仍然想知道,我如何创建两个数组,而不是像我在问题中解释的那样一个一个映射到另一个的数组?最后,我觉得第一个答案是我最终想要的目标,但我无法使用它..添加了两个数组示例。哈哈,太棒了。。。大坝容易。。。你得到了复制和粘贴代码的投票,但我仍然想知道,我如何创建两个数组,而不是像我在问题中解释的那样创建一个映射到另一个的数组?最后,我觉得第一个答案是我最终想要的目标,但我不能使用它..添加了两个数组示例。这基本上与已接受的答案相同,但由于它有效,您可以获得投票:)是的,我在发布我的答案后看到了已接受的答案。很高兴你得到了一个工作代码示例。这基本上与公认的答案相同,但你得到了一个投票,因为它是有效的:)是的,我在发布我的答案后看到了公认的答案。很高兴您得到了一个工作代码示例。您的答案非常适合于字典解决方案,如我在问题中指定的方式,并且非常简洁:)我喜欢它。您的答案非常适合于字典解决方案,如我在问题中指定的方式,并且非常简洁:)我喜欢它。