我们将客户详细信息分布在4个遗留系统中,随后将所有数据迁移到1个新系统中。
我们的客户以前在每个系统中都有不同的帐号,我需要检查新系统中使用了哪个帐号,这支持API调用。
我有一个包含所有可能帐号的文本文件,结构如下:
30000001, 30000002, 30000003, 30000004
30010000, 30110000, 30120000, 30130000
34000000, 33000000, 32000000, 31000000
每行代表每个客户的所有旧帐号。
我不确定这是否是最佳方法,但我想打开文本文件并创建嵌套列表:
[['30000001', '30000002', '30000003', '30000004'], ['30010000', '30110000', '30120000', '30130000'], ['34000000', '33000000', '32000000', '31000000']]
然后我想迭代每个列表,但为了节省API调用,一旦我在特定列表中验证了新帐号,我想突破并转到下一个列表。
import json
from urllib2 import urlopen
def read_file():
lines = [line.rstrip('\n') for line in open('customers.txt', 'r')]
return lines
def verify_account(*customers):
verified_accounts = []
for accounts in customers:
for account in accounts:
url = api_url + account
response = json.load(urlopen(url))
if response['account_status'] == 1:
verified_accounts.append(account)
break
return verified_accounts
主要问题是当我从文件中读取它时会返回如下数据,因此我无法迭代各个帐户。
['30000001, 30000002, 30000003, 30000004', '30010000, 30110000, 30120000, 30130000', '34000000, 33000000, 32000000, 31000000']
此外,是否有更多Pythonic方式使用列表推导或类似迭代和检查帐号。似乎有太多的嵌套被用于Python?
最后要提的是要检查的客户超过255个,差不多有1000个。我能将超过255个参数传递给函数吗?
答案 0 :(得分:2)
这个怎么样?只需使用str.split()
:
l = []
with open('customers.txt', 'r') as f:
for i in f:
l.append([s.strip() for s in i.split(',')])
输出:
[['30000001', '30000002', '30000003', '30000004'],
['30010000', '30110000', '30120000', '30130000'],
['34000000', '33000000', '32000000', '31000000']]
答案 1 :(得分:1)
这个怎么样?
with open('customers.txt','r') as f:
final_list=[i.split(",") for i in f.read().replace(" ","").splitlines()]
print final_list
输出:
[['30000001', '30000002', '30000003', '30000004'],
['30010000', '30110000', '30120000', '30130000'],
['34000000', '33000000', '32000000', '31000000']]