有两行数据,存放在txt文件里面(手动建立文件,并添加如下数据):
url:/futureloan/mvc/api/member/register@mobile:18866668888@pwd:123456
url:/futureloan/mvc/api/member/recharge@mobile:18866668888@amount:1000
请利用上课所学知识,把txt里面的两行内容,取出然后返回如下格式的数据:(可定义函数)
[{‘url’:’/futureloan/mvc/api/member/register’,‘mobile’:‘18866668888’,‘pwd’:‘123456’},
{‘url’:’/futureloan/mvc/api/member/recharge’,‘mobile’:‘18866668888’,‘amount’:‘1000’}]
思路:
1、先用两个变量来接收文档中的两行数据
先处理第一个字符串
'url:/futureloan/mvc/api/member/register@mobile:18866668888@pwd:123456'
2、以@符来将得到的字符串分隔开,变成了一个拥有3个字符串的列表m_list
m_list =['url:/futureloan/mvc/api/member/register','mobile:18866668888','pwd:123456']
3、分析上面的m_list中的元素,其中的字符串中间都有一个冒号,冒号前面的就是字典的键,冒号后面的是字典的值
将m_list中的每个字符串m_list[index]以':'分隔成两个小列表,
m_list[i] = ['url','/futureloan/mvc/api/member/register']
dict[m_list[i][0]] = m_list[i][1]
4、将每个字典都存在一个新列表中
代码示例:
在该文件所在的包下建立一个lx01.txt文件,内容:
url:/futureloan/mvc/api/member/register@mobile:18866668888@pwd:123456
url:/futureloan/mvc/api/member/recharge@mobile:18866668888@amount:1000
#按行读取lx01.txt文件的内容,
with open('lx01.txt', encoding ='utf8') as f:
a = f.readline()
with open('lx01.txt', encoding ='utf8') as f:
next(f)
b = f.readline()
# print('a:', a)
# print('b:', b)
def trans(m_str):
m_list = m_str.split('@') #以@为分隔点,将字符串分开
#m_list是列表,元素是字符串,每个元素中间都有一个:,['url:/fut...', 'mob..:1886..', 'amo..:1000']
m_dict = {}
for i in range(len(m_list)):
li = m_list[i].split(':')
#以:将元素分为两份,一份作为dict的键,一份作为字典的值,存入m_dict
m_dict[li[0]] = li[1]
return m_dict
def trans_list(a_dict, b_dict):
li = []
li.append(a_dict) # 将字典存放在新列表中
li.append(b_dict)
print(li)
trans_list(trans(a), trans(b))
运行结果(太长不方便截图):
[{'url': '/futureloan/mvc/api/member/register', 'mobile': '18866668888', 'pwd': '123456\n'}, {'url': '/futureloan/mvc/api/member/recharge', 'mobile': '18866668888', 'amount': '1000'}]