将striplist()合并到python3代码中?

2024-09-30 22:28:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv阅读器,它把数据值拉到一个列表中,一旦这个数据被放入一个列表中,我想去掉列表中的空白。我在网上看到有人在使用striplist()

例如

def striplist(l):
    return([x.strip() for x in l])

然而,作为一个新手,并试图合并代码,我没有太多的运气,在这个问题上的指导或一些关于我做错了什么的理解将是非常感谢的。我的代码如下:

^{pr2}$

Tags: csv数据代码in列表forreturndef
2条回答

您的函数示例:

def strip_list(the_list):
    return [line.strip() for line in the_list]

lines = ['foo\n', 'bar\r\n', 'baz']
stripped_list = strip_list(lines)
print(stripped_list)

将输出:

^{pr2}$

这里作为一个丑陋的内存低效的一行代码,只是为了显示使用splitlines():)

return ''.join(csvreaderlist).splitlines()

如果我正确地理解了这个问题,那么您就是在问您应该将您的strip_list函数应用到哪里,以便将要导入的CSV数据都变成剥离字符串。关键的地方是你有“数据”列表,你从CSV阅读器。这将始终是一个字符串列表,因此您可以在将其附加到结果数组之前将其传递给strip_list函数。在

顺便说一下,您目前已经在if语句的两个分支中复制了CSV读取循环的核心部分。那是不必要的。以下是如何在不复制的情况下完成此操作:

if filetype:
    next(reader)
    print("CSV file located, headers present, importing data")
else:
    print("CSV file located, no headers found, importing data")

time.sleep(3)

for data in reader:
        csvreaderlist.append(strip_list(data)) # do stripping here!
        csvfilecounter = csvfilecounter +1
        summarycounter = summarycounter +1

请注意,如果要在模块级(而不是作为函数的一部分)运行strip_list的定义,则需要将其移到该代码上方的某个位置。在

顺便说一下,您当前正在传递TrueFalse(返回值csv.Sniffer().has_header())作为Readerdialect参数。那可能不是你想做的。相反,您需要dialecthas_header的单独变量:

^{pr2}$

相关问题 更多 >