Infi-chu:
http://www.cnblogs.com/Infi-chu/
TXT文本存儲
TXT文本存儲,方便,簡單,幾乎適用於任何平台。但是不利於檢索。
1.舉例:
使用requests獲得網頁源代碼,然后使用pyquery解析庫解析
import requests
from pyquery import PyQuery as pq
url = 'https://www.zhihu.com/explore'
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)'
}
html = requests.get(url,headers=header).text
doc = pq(html)
items = doc('.explore-tab .feed-item').items()
for item in items:
question = item.find('h2').text()
author = item.find('.author-link-line').text()
answer = pq(item.find('.content').html()).text()
with open('test.txt','a',encoding='uft-8') as f:
f.write('\n'.join([author,question,answer]))
f.write('\n'.join('\n'+'='*50+'\n'))
2.打開方式:
r
rb
r+
rb+
w
wb
w+
wb+
a
ab
a+
ab+
【注】
w和a的區別相當於Linux中>和>> 的區別
JSON文件存儲
JSON全稱為(JavaScript Object Notation),JavaScript對象標記,通過對象和數組的組合來表示數據,構造簡潔,結構化程度非常高,類似於Python當中的字典
1.對象&數組:
在JavaScript中,一切皆對象。
對象:
在JavaScript中使用{}來表示,可以理解為Python當中的字典,有鍵有值。
數組:
在JavaScript中使用[]來表示,可以理解為Python當中的列表。
2.讀取JSON
我們可以調用Python的json庫的loads()方法將JSON文本轉化為JSON對象,使用dumps()方法將JSON對象轉化為文本字符串。
使用get()方法得到鍵的名字后的值,如果沒有值,則返回None,一般會自定義一個默認值,以防返回None
在JSON字符串中,要使用雙引號,否則會拋出異常。
3.輸出JSON
調用dumps()方法將JSON對象轉化為文本字符串。
import json
data = [
{
'name':'Infi-chu',
'sex':'male',
'birthday':'2000.01.01'
}
]
with open('data.json','w+') as f:
f.wirte(json.dumps(data))
'''
想要保存json的格式,可以加一個參數,indent
with open('data.json','w') as f:
f.write(json.dumps(data,indent=2))
'''
CSV文件存儲
CSV全稱是(Comma-Separated Values),逗號分隔值或字符分隔值,它是以純文本形式存儲表格數據,相當於結構化的純文本。
它比Excel更簡潔,XLS文本是電子表格,它包含了文本、數值、公式和格式等內容,而CSV中不包含這些內容。
1.舉例
import csv
with open('data.csv','w+') as cf:
wirter = csv.writer(cf)
'''
wirter = csv.writer(cf,delimiter=' ') # 此參數是增加分隔符
'''
wirter.wirterow(['id','name','age']) # writerows是同時寫入多行,writerow是單行寫入
wirter.wirterow(['1','Infi',23])
wirter.wirterow(['2','chu',23])
# 字典方式的寫入發
import csv
with open('data.csv','w')as f:
fieldname = ['id','name','age']
wirter = csv.DictWriter(f,filednames=filename) # DictWriter()方法初始化一個字典寫入對象
wirter.writheader() # writheader()方法寫入頭信息
wirter.wirterows({'id':'1','name':'n1','age':1},{'id':'2','name':'n2','age':2},{'id':'3','name':'n3','age':3})
2.讀取
# 通過csv庫來讀取CSV文件
import csv
with open('data.csv','r',encoding='utf-8') as f:
reader = csv.reader(f) # reader()方法便利出每行的內容
for i in render:
print(row)
# 通過pandas 讀取
import pandas as pd
df = pd.read_csv('data.csv')
print(df)
