2016-11-28 90 views
0

我想保存到临时csv文件。尽管代码片段没有返回错误/回溯,但它会返回一个空的临时CSV文件,其中包含来自PermitData csv的第一列的名称(尽管下一个语法应该跳过该代码)。代码段出了什么问题?请提供您的细致反馈。保存到临时csv文件

import csv 

with open('C:\\Users\\Python Files\\output.csv', 'w') as output: 
    with open('C:\\Users\\Python Files\\PermitData.csv', 'rb') as f: 
     reader = csv.reader(f) 
     output.write(next(reader)[0].replace('\t', ' ') + '\n') 
     data = list(reader) 
     for item in data: 
      item = item[0].split(' ') 
      if len(item) > 6: 
       item[1] = item[1].title() 
       output.write(' '.join(item) + '\n') 

print 'Output created' 

行[1]在PermitData.csv已地址概括为:

1234 PRESTON ROAD 
4587 RAINING COURT 

我需要他们像下面这样我使用的标题()的地址转换为:

1234 Preston Road 
4587 Raining Court 

由于不适合直接写入PermitData.csv文件,因此我不能创建临时文件。如果有一种方法可以直接写入原始源代码,在这种情况下是PermitData.csv,请让我知道它是如何合理的。

+0

即 “数据” 变量是一个2维列表。在迭代数据中的每个项目时,项目也是列表。你不能分割一个列表,只能是一个字符串。当你说'len(item)'会给你“item”列表中元素的个数。不是字符串中的字符数。 –

+0

重新分配给'item'不是一个好主意。它使代码很难理解和调试。尝试找到每个变量的描述性名称。它确实有助于找出错误。 –

+0

也许这会帮助你添加一些输入和输出的例子。 –

回答

1

这应该做你所需要的。

  • 我已经分开了开头&关闭的文件。
  • 看来你使用空格作为分隔符,所以必须指定 。
  • 我也将原始2D列表中的数据复制到另一个 修改。复制是不必要的,你可以创建一个空的 2D列表并追加到它。
  • 我们将.title()函数设置为列表中的每个元素。 如果您知道一些元素不需要它,您可以使用条件, 就像第一列。

    import csv 
    
    with open('C:\\Users\\Python Files\\PermitData.csv', 'r') as f: 
        reader = list(csv.reader(f, delimiter=' ')) 
    
    new_data = list(reader) 
    for x, line in enumerate(reader): 
        for y, word in enumerate(line): 
         new_data[x][y] = word.title() 
    
    with open('C:\\Users\\Python Files\\output.csv', 'w') as f: 
        writer = csv.writer(f, delimiter=' ') 
        writer.writerows(new_data) 
    
    print 'Output created'