print(dummy)不打印任何东西。它是空的吗?

时间:2018-01-03 20:13:03

标签: python python-3.x

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")

1 个答案:

答案 0 :(得分:0)

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

您应首先从b剥离空格:

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

str.strip() method返回一个新字符串,其中包含从开头和结尾删除的所有空格(包括换行符)。在拆分之前,您还可以先将其应用于line

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

但是你会在逗号到位后留下空白,并在分配给a的值的开头删除空格。

您应该使用csv 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)