将文本文件转换为列表

时间:2015-10-31 07:10:14

标签: python

我们将客户详细信息分布在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个参数传递给函数吗?

2 个答案:

答案 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']]