print(dummy)不打印任何内容。是空的吗?

2024-04-25 14:37:06 发布

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

pathway.txt包含这样的行(如下)

a,
b,0
c,8
d,

dummy应该打印[a,d]

#!/usr/bin/python3.6
def pathway(file):
    dict={}
    dummy=[]
    file_object=open(file, "r+")
    for line in file_object:
        a, b = line.split(',')
        if b == '':
            dummy.append(a)
    print (dummy)

pathway("pathway.txt")

Tags: intxtforifbinobjectusrdef
1条回答
网友
1楼 · 发布于 2024-04-25 14:37:06

您没有处理行分隔符。除了最后一个line字符串外,所有字符串都将以\n换行符结尾。这使得b等于'\n',而不是空字符串。你知道吗

您应该首先从b中去掉空白:

for line in file_object:
    a, b = line.split(',')
    if not b.strip():
        dummy.append(a)

^{} method返回一个新字符串,其中从开始和结束处删除了所有空格(包括换行符)。您也可以在拆分之前首先将其应用于line

a, b = line.strip().split(',')

但是,您将在逗号之后保留空格,并删除指定给a的值开头的空格。你知道吗

您真的应该使用^{} module来读取逗号分隔的数据:

def pathway(file):
    dummy = []

    with open(file) as file_object:
        reader = csv.reader(file_object)
        for row in reader:
            if len(row) == 1:
                dummy.append(row[0])

    print(dummy)

相关问题 更多 >