Python不在数组中不起作用

时间:2017-10-25 02:32:34

标签: python arrays

我有一个获取公司名称的循环,将它们存储在一个数组中。虽然有时公司名称被发布两次,但我不想写入该文件。

我检查名称是否不在数组中但是它总是返回false,即使我打印出数组中的所有值都存在。

if phone != None:
    websiteArr.append(companyName)
    #print(websiteArr)
    if companyName not in websiteArr:
        f.write(re.sub('\s+',' ',str(companyName)) + ',' + phone.lstrip())
        print(companyName)
        companyName = ''
        phone = ''
    else:
        print('errorr')
        print(websiteArr)
else:
    continue

1 个答案:

答案 0 :(得分:0)

您不应该将该项目附加到列表中,直到之后您已检查它是否存在于列表中:

        if phone:
            #print(websiteArr)
            if companyName not in websiteArr:
                websiteArr.append(companyName)
                f.write(re.sub('\s+',' ',str(companyName)) + ',' + phone.lstrip())
                print(companyName)
                companyName = None
                phone = None
            else:
                print('errorr')
                print(websiteArr)
        else:
            continue

或者,使用字典:

websites = dict()
...
if phone:
    websites[companyName] = phone.lstrip()

你会注意到我没有检查是否存在,因为可以懒惰地创建python字典键/值对,这意味着如果你在赋值语句中引用一个键,即使它没有#&# 39; t(尚)存在,它将存在。

以上相当于:

websites.add(companyName, phone.lstrip())

如果密钥存在,add方法将引发错误,而惰性方法只是在赋值时覆盖现有的键/值对。对于获取值,您可能需要检查是否存在键,除非您重复使用元组键/值对。

for company,phone in websites.iteritems()
    f.write(re.sub('\s+',' ', company) + ',' + phone())