python 操作文本数据





每次file.open()完了一定要file.close()掉



1. 读取文本数据


#读取放在桌面上的ip.txt
f=open("C:/Users/Userxxxx/Desktop/ip.txt")
for ipContent in f:
    print(ipContent)
f.close()


happysneaker.com






2. 统计文本共多少行数据、添加行号输出


f = open("C:/Users/Jason/Desktop/ip.txt")
print(len(f.readlines()))
f.close()

happysneaker.com


f=open("C:/Users/Jason/Desktop/ip.txt")
for (num,value) in enumerate(f):
	print(num,":",value,end='')
f.close()

happysneaker.com






3. 读取所有数据并存到一个List


最先想到:

f = open("C:/Users/Jason/Desktop/ip.txt")
list=[]
for ip in f:
	list.append(ip)
print(list)
f.close()

然而输出结果....:

happysneaker.com


改进:

f = open("C:/Users/Jason/Desktop/ip.txt")
list=[]
for ip in f:
	list.append(ip.strip('\n'))
print(list)
f.close()

结果:

happysneaker.com






4. Json和Pickle:用于序列化的两个模块


json,用于字符串 和 python数据类型间进行转换:四个功能:dumps、dump、loads、load

pickle,用于python特有的类型 和 python的数据类型间进行转换:四个功能:dumps、dump、loads、load

现在有个场景在不同设备之间进行数据交换的方式就是传文件,dumps可以直接把服务器A内存的东西发给B服务器,A和B都是python程序是不现实的,不同的语言程序之间的如何交换数据?就用到了json,并且json能dump的结果更可读。那pickle有什么用?Json只能把常用的数据类型序列化(列表、字典、列表、字符串、数字),但日期格式、类对象等,josn就不行了。


场景一:dumps 将 字典(数据) 转换为 字符串

import json

test_dict = {'bigberg': [7600, {1: [['iPhone', 6300], ['Bike', 800], ['shirt', 300]]}]}
print(test_dict)
print(type(test_dict))
#dumps 将数据转换成字符串
json_str = json.dumps(test_dict)
print(json_str)
print(type(json_str))

happysneaker.com



场景二:loads 将 字符串 转换为 字典

#loads 将字符串转换为字典
new_dict = json.loads(json_str)
print(new_dict)
print(type(new_dict))

happysneaker.com



场景三:dump 将数据写入json文件

#dump 将数据写入Json文件
f=open("C:/Users/Jason/Desktop/777.json",'w')
json.dump(new_dict,f)
print("写入数据完成!")

happysneaker.com



场景四:load 打开文件,把字符串变换为数据类型,比如字符串的666变成int666

import json

#打开文件,并把字符串变为数据类型
f=open("C:/Users/Jason/Desktop/777.json")
load_dict=json.load(f)
print(load_dict)







NOTES:

① 

open(filepath,mode) 参数为路径、读写模式,默认不写mode为只读模式 ' r ' , 还有其他模式可查;

read(size) 读取指定大小的字符串返回,如果size不写,默认读取整个文本;

readline() 读取一行返回;

readlines() 读取整个文本以List返回。

② 

strip() 去除字符串首尾的指定字符,无关顺序,默认为空格、换行,不能删除中间部分的字符。

str = "123abcrunoob321"
print (str.strip( '12' ))  # 删除字符序列为 12 , 结果为 : 3abcrunoob3

rstrip()函数是去掉末尾的末尾的指定字符,其他同上。

str.join()、filter(BOOL型判断函数可以自己写,可迭代的被判断对象)返回一个List:s = ''.join(filter(str.isalnum,s)).lower()

③ 

注意 字符串、字典、数字(int、float)  这三种数据是不同的类型





Web安全技术分享
请先登录后发表评论
  • 最新评论
  • 总共0条评论