我有一个获取公司名称的循环,将它们存储在一个数组中。虽然有时公司名称被发布两次,但我不想写入该文件。
我检查名称是否不在数组中但是它总是返回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
答案 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())