如果x==''在从fi读取时不会注册

2024-09-30 08:37:21 发布

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

试图让我的程序从一个文件中将行分成3行,然后应用“if row1==x:”来添加到现有的类。现在这不是我的问题,我让它工作,除了当第1行是''。所以我试着把输入文件改成“”,然后改成“*”,再改成“k”(以此类推),什么都没用。 问题是,输入文件中的大多数行都读取:1234565、'streetadress1'、'streetadress2',但对于某些行,没有streetadress1,只有'。但是程序在识别号码或“streetaddress2”时没有问题

class adress(object):
def __init__(self,street,ykord,xkord):
    self.street = street
    self.ykord = ykord
    self.xkord = xkord
    self.connected = []
    self.anlid = []
    self.distances = []
    self.parent = []
    self.child =[]


def set_connections(self):
    input_file = open("kopplingar2.txt")
    temp = input_file.read().splitlines()
    for l in temp:
        row = l.split(',')
        identity = row[0]
        streetA = row[1]
        streetB = row[2]
        if streetA == self.street:
            diction = {'street':streetB, 'identity':identity}
            self.child.append(diction)
        elif streetA == '':
            self.anlid.append(identity)
            print 'poop!'
        elif streetB == self.street and streetA != '':
            diction = {'street':streetA, 'identity':identity}
            self.parent.append(diction)
            print streetA

“打印便便”只是为了看看它是否曾经发生过,但事实并非如此。结果应该是大约400行poop,因为inputfile中大约75%的行包含“”

我不知道为什么它适用于其他行,但不适用于行1(除了它有时是“”而不是完整的字符串)


Tags: 文件self程序streetifdefidentityrow
2条回答

“”是Python中的空字符串。如果需要将值与由两个撇号字符组成的字符串进行比较,则需要编写streetA = "''"

正如@yole所说,您需要与"''"进行比较,例如,如果文件中的一行是123,'','streetB',那么l将是"123,'','streetB'",您得到的是

>>> l="123,'','streetB'"
>>> l.split(',')
['123', "''", "'streetB'"]
>>> 

相关问题 更多 >

    热门问题