【问题标题】:Skipping blanks when appending columns in a sheet (csv) to lists in python将工作表(csv)中的列附加到python中的列表时跳过空格
【发布时间】:2020-02-01 06:41:19
【问题描述】:

这是我的代码,我正在尝试将 csv 文件中的信息附加到列表中。我试图避免附加空格。我放入的第一个 for 循环似乎可以解决问题,但仅适用于行 [0]。我需要对第 [1] 行、第 [2] 行、第 [3] 行执行相同的操作,但它对第二个循环不起作用。我尝试了一个嵌套的 for 循环,它也不起作用。有没有办法可以简化这一点,并确保每行中的每个项目都省略空格。 (lines [0]) 非常像工作表的第一列等。谢谢。

import wx


with open('info.csv', 'r') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    dropdown_initials = []
    dropdown_printerID = []

    for lines in csv_reader:
        if lines[0] in (None,''):
            continue
        dropdown_initials.append(lines[0])
    print (dropdown_initials)

    for lines in csv_reader:
        if lines[1] in (None,''):
            continue
        dropdown_printerID.append(lines[1])
    print (dropdown_printerID)```


sample for csv: 

User,Object id 1,Info 1 
User2,object id 2,Info 2
User3,object id 3,Info 3
,object id 4,Info 4
,object id 5,Info 5
,,Info 6
,,Info 7
,,Info 8
,,Info 9
,,Info 10

【问题讨论】:

  • 能否为您的 info.csv 添加示例内容?
  • 嘿,我添加了一个示例,这有帮助吗?抱歉,我是发帖新手。

标签: python list csv for-loop wxpython


【解决方案1】:

试试这个:

import csv


with open(r"Yourfile.csv") as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    dropdown_initials = []
    dropdown_printerID = []

    for lines in csv_reader:
        if lines[0].strip():
            dropdown_initials.append(lines[0].strip())
        if lines[1].strip():
            dropdown_printerID.append(lines[1].strip())
    print (dropdown_initials)
    print (dropdown_printerID)

我还添加了 strip() 以确保您没有将空格作为值附加。

【讨论】:

  • 我认为,这是正确的答案,但我会添加一个关于 @user12151872 方法的注释:但它对第二个循环不起作用。 - csv_reader 对象不是预计会被多次迭代,因为csv.reader => 返回的对象是一个迭代器。详情请参阅zetcode.com/lang/python/itergener
  • @slackmart 绝对是,这就是原因。抱歉,我错过了解释它不起作用的原因。谢谢你提出来。 :-)
猜你喜欢
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 2017-03-07
  • 2017-12-18
  • 2021-07-12
相关资源
最近更新 更多