python操作excel方法
這里介紹3種Python讀寫Excel的方法,分別是xlrd和xlwt、openpyxl以及pandas,這3種方法都非常簡(jiǎn)單,感興趣的朋友可以自己嘗試一下:
xlrd和xlwt
這是最基本的Python讀寫Excel的方式,xlrd專門用于讀取Excel,xlwt專門用于寫入Excel,下面我簡(jiǎn)單介紹一下這種方式:
xlrd讀取excel,測(cè)試代碼如下,非常簡(jiǎn)單,先打開(kāi)對(duì)應(yīng)的Excel文件,然后定位到某一個(gè)sheet,最后再直接讀取行、列、單元格值即可:
xlwt寫入excel,測(cè)試代碼如下,新建一個(gè)Excel文件,然后添加一個(gè)sheet,最后再直接將數(shù)據(jù)寫入對(duì)應(yīng)單元格即可:
openpyxl
這也是Python一個(gè)專門用于讀寫Excel文件的模塊,基本讀寫方式和xlrd、xlwt差不多,使用起來(lái)也非常方便,下面我簡(jiǎn)單介紹一下這種方式:
讀取Excel,測(cè)試代碼如下,打開(kāi)Excel文件,然后根據(jù)name獲取到對(duì)應(yīng)sheet,最后再直接讀取行、列、單元格值即可:
寫入Excel,測(cè)試代碼如下,新建一個(gè)Excel文件,然后添加一個(gè)活動(dòng)sheet,最后再直接將數(shù)據(jù)寫入單元格即可:
pandas
這是Python最簡(jiǎn)單的讀寫Excel文件的方法,pandas內(nèi)置了read_excel和to_excel這2個(gè)函數(shù),一行代碼即可完成對(duì)Excel文件的讀寫,下面我簡(jiǎn)單介紹一下這種方式:
讀取Excel,測(cè)試代碼如下,非常簡(jiǎn)單,read_excel函數(shù)直接讀取即可,這里返回的數(shù)據(jù)類型是DataFrame,可以按行、列、單元格取值:
寫入Excel,測(cè)試代碼如下,先構(gòu)造需要寫入的數(shù)據(jù),然后直接利用DataFrame的to_excel函數(shù)保存為Excel文件即可:
至此,我們就介紹完了Python讀寫Excel文件的3種方法。總的來(lái)說(shuō),這3種方法都非常簡(jiǎn)單,只要你有一定的Python基礎(chǔ),熟悉一下相關(guān)代碼和文檔,很快就能掌握的,網(wǎng)上也有相關(guān)教程和資料,介紹的非常詳細(xì),感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對(duì)你有所幫助吧,也歡迎大家評(píng)論、留言進(jìn)行補(bǔ)充。
html中文亂碼怎么解決
請(qǐng)看類Linux下的代碼,你的問(wèn)題是在windows下造成的。怎么破?
#coding:utf-8修改為#coding:gbkhtml=page.read()修改為html=page.read().decode('utf-8').encode('gbk')小段代碼,建議完善幾個(gè)地方。
一行Python,你可以做什么
繼“你看過(guò)/寫過(guò)哪些有意思的代碼”后,小慕又收到關(guān)于Python的戰(zhàn)帖,這怎么能慫?快快接招吧!
發(fā)功之前友情提示:部分案例適用于Python3,在Windows下面可以用Python命令代替,具體請(qǐng)根據(jù)自己的修行選擇。
一、江湖純情版1、愛(ài)心
先來(lái)個(gè)高贊愛(ài)心的中英文結(jié)合版:
print'\n'.join([''.join([(u'ILoveChina愛(ài)'[(x-y)%11]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0else'')forxinrange(-30,30)])foryinrange(15,-15,-1)])如果換成純漢字的版本,則可能會(huì)出現(xiàn)較明顯的變形,所以為保證妹子不理解成“變心”,建議使用中英文結(jié)合的方式。你get到了嗎?
2、美麗的螺旋
或許你覺(jué)得心型圖案太俗套,那么試試下面這個(gè)美麗的螺旋?在python編譯器中輸入下面的代碼,接下來(lái)讓我們來(lái)見(jiàn)證奇跡吧!
exec"""\nfromturtleimport*\nforiinrange(500):\nforward(i)\nleft(91)\n"""二、娛樂(lè)縱情版1、猜數(shù)字
無(wú)聊的時(shí)候,猜猜數(shù)字也是很有樂(lè)趣的嘛。1~99范圍內(nèi)的整數(shù),如果猜對(duì)了會(huì)給你一個(gè)“Y”,如果猜高了會(huì)給出一個(gè)“H”;猜低了,你會(huì)得到一個(gè)“L”(Y、H、L可以根據(jù)你希望它給出的提示進(jìn)行更換),你有六次機(jī)會(huì)猜出正確的結(jié)果哦!
python3-c"importrandom;n=random.randint(1,99);[(lambdaa:print('Y'ifa==nelse'H'ifa>nelse'L'))(int(input()))foriinrange(6)]”2、老虎機(jī)
猜數(shù)字不過(guò)癮?不如再來(lái)試試迷你老虎機(jī),用隨機(jī)的unicode字符打樣出來(lái),完美模擬了老虎機(jī)的效果!
python3-c"importrandom;p=lambda:random.choice('7');[print('|'.join([p(),p(),p()]),end='\r')foriinrange(8**5)]”3、一行代碼幫你選彩票號(hào)碼
當(dāng)然,還有更刺激的彩票搖號(hào),不過(guò)與其將命運(yùn)交給彩票站的投注機(jī)器,不如自己寫一行代碼,喏,彩票選號(hào)代碼了解一下:
python-c"fromrandomimportsample;print'Lottonumbers:%s'%sample(range(1,50),6)"友情提示:彩票有風(fēng)險(xiǎn),出手須謹(jǐn)慎,至于這行代碼給出的結(jié)果是否能夠中獎(jiǎng),那就只能看你的運(yùn)氣啦!
三、學(xué)府深造版1、一行代碼實(shí)現(xiàn)GUI用戶界面
python-c"fromTkinterimport*;root=Tk();w=Label(root,text='你好!慕課網(wǎng)!');w.pack();root.mainloop()”一行代碼實(shí)現(xiàn)GUI用戶界面有木有!
2、一行代碼啟動(dòng)一個(gè)http服務(wù)器
一行代碼可以啟動(dòng)一個(gè)HTTP服務(wù)器,這一點(diǎn)真的非常好用,所以盡管有其他答主提到過(guò),還是忍不住要再分享一下!
python3-mhttp.server8888在本地,輸入網(wǎng)址localhost:8888即可訪問(wèn),默認(rèn)會(huì)列出你的本地目錄:
3、Python的哲學(xué)
每次讀到Python之禪的時(shí)候,總是情不自禁地陷入優(yōu)美的意境不能自拔,恨不能隨時(shí)隨地都能拿來(lái)拜讀?下面這行代碼能夠滿足你的愿望:
python-c"importthis"回車!然后,你便會(huì)發(fā)現(xiàn)你的屏幕上已然出現(xiàn)了心心念念的Python的ZEN(禪意)。神不神奇?驚不驚喜?
4、簡(jiǎn)易計(jì)算器
print(eval(input()))這個(gè)單行代碼只用了默認(rèn)引入的函數(shù),其意義也是單純而透明:讀入一個(gè)python表達(dá)式并求值,將其結(jié)果輸出到屏幕,當(dāng)個(gè)簡(jiǎn)單計(jì)算器綽綽有余。
5、今天距離明年元旦還有多少天?
不會(huì)跟妹子搭訕?教你一招搭訕大法:故作神秘地問(wèn)她知不知道還有多少天就是明年的元旦了,趁妹子一臉懵掉你打開(kāi)編譯器,瀟灑地敲出以下這行代碼,然后看著結(jié)果告訴她:你看,距離明年元旦還有XX天!
python-c"""importdatetime;today=datetime.date.today();someday=datetime.date(2019,1,1);diff=someday-today;printstr(diff.days)+'days'“""妹子接下來(lái)可能會(huì)有一波感嘆:哎呀,還有XX天了?日子過(guò)得真快啊!
然后你轉(zhuǎn)手將代碼一改,把元旦的時(shí)間改為你和妹子認(rèn)識(shí)的時(shí)間,然后跟妹子說(shuō):你看,我們都認(rèn)識(shí)這么久了,還沒(méi)一起吃過(guò)飯呢,不如今晚下班請(qǐng)你吃個(gè)飯?
接下來(lái),一定要記得按時(shí)下班啊!
其實(shí),就單行而言,Python并不會(huì)比其它的多范式語(yǔ)言更強(qiáng),實(shí)際上由于lambda表現(xiàn)能力弱,導(dǎo)致Python本身要更弱一些。
但是,存在lambda就存在無(wú)限可能。Python中的import語(yǔ)句是可以通過(guò)調(diào)用__builtin__模塊中的__import__來(lái)代替的,更有意思的是,__builtin__模塊內(nèi)的所有內(nèi)容均是自動(dòng)import的。
四、附加武功秘籍1、換臉術(shù)
這個(gè)10進(jìn)制轉(zhuǎn)換16進(jìn)制的單行代碼就是lambda無(wú)限可能的有力論證:
print("#"+''.join(["{:0>2}".format(hex(int(a))[2:])forain__import__('sys').argv[1:]]))2、星羅陣
這樣的畫圖,只是簡(jiǎn)單的用到了調(diào)用時(shí)傳遞參數(shù)而已。
[print('\n'.join(""*abs(c)+"*"*(a-abs(c))forcinrange(-a+1,a)))forain[int(__import__('sys').argv[1])]]3、操控術(shù)
如果調(diào)用更復(fù)雜的功能呢?例如用Flask來(lái)個(gè)Helloworld?
[y[0].run()foryin[(x,x.route('/')(lambda:'Hello,world!'))forxin[__import__('flask').Flask(__name__)]]]使用列表生成的實(shí)現(xiàn)看起來(lái)可能不太優(yōu)雅,但并不會(huì)影響效果。
4、凌波微步
或者你還想看看帶窗口的心形曲線?不要看那個(gè)黑黑的ASCII顏藝的話可以這樣(需要numpy和matplotlib)
[plt.show()for_,__,___,pltin[(plt.plot(x,y1,color='r'),plt.plot(x,y2,color='r'),np,plt)forx,y1,y2,np,pltin[(x,0.618*np.abs(x)-0.8*np.sqrt(64-x**2),0.618*np.abs(x)+0.8*np.sqrt(64-x**2),np,plt)forx,np,pltin[(np.linspace(-8,8,1024),np,plt)fornp,pltin[(__import__('numpy'),__import__('pylab'))]]]]]5、吸星大法
如果你是深度學(xué)習(xí)煉丹師,那不妨來(lái)個(gè)一行預(yù)測(cè)?
[print(decode(model.predict(x)))formodel,x,decodein[(ResNet50(weights='imagenet'),preprocess_input(np.expand_dims(image.img_to_array(image.load_img('elephant.jpg',target_size=(224,224))),axis=0)),decode)forResNet50,image,preprocess_input,np,decodein[(kav.applications.resnet50.ResNet50,kp.preprocessing.image,kav.applications.resnet50.preprocess_input,np,kav.applications.resnet50.decode_predictions)forkav,kp,npin[(__import__('keras.applications.resnet50'),__import__('keras.preprocessing.image'),__import__('numpy'))]]]]按照這樣的方法,幾乎所有的代碼最終都能壓到同一行里;配合Python各種強(qiáng)大的包,寫出個(gè)一行人臉識(shí)別、一行機(jī)器學(xué)習(xí)、一行網(wǎng)頁(yè)爬蟲(chóng)等都不會(huì)有什么問(wèn)題。
綜上,“一行代碼”可供修煉的“功夫”多種多樣,雖然有趣,但并沒(méi)有太多的實(shí)際意義,在實(shí)際工作中沒(méi)有必要強(qiáng)行把所有的代碼都?jí)嚎s到一行中實(shí)現(xiàn)。當(dāng)然,如果是為了向妹子炫技的話,那么請(qǐng)盡管展示你的才華!
程序員學(xué)習(xí)交流請(qǐng)?zhí)砑幽秸n網(wǎng)官方客服微信:mukewang666回復(fù)暗號(hào)“前端面試”可進(jìn)前端交流群回復(fù)暗號(hào)“Java”可進(jìn)Java交流群回復(fù)暗號(hào)“專欄”可進(jìn)程序員交流群推薦閱讀:
計(jì)算機(jī)專業(yè)同學(xué)如何避免自己成為一名低級(jí)碼農(nóng)?https://www.wukong.com/question/6546119457276690691/在做程序員的道路上,你掌握了什么概念或技術(shù)使你感覺(jué)自我提升突飛猛進(jìn)?https://www.wukong.com/question/6517473209128845575/大公司和小公司的程序員差別在哪?https://www.wukong.com/question/6514834007652303108/程序員面試的時(shí)候,大家都中過(guò)什么套路?https://www.wukong.com/question/6481413885956981005/你見(jiàn)過(guò)有哪些搞笑的代碼?https://www.wukong.com/question/6532626072771494147/程序員很悶騷么?https://www.wukong.com/question/6492183419819131150/Python爬鏈接爬蟲(chóng)怎么寫
python爬蟲(chóng)我們都知道是可以在網(wǎng)上任意搜索的腳本程序,主要是幫助我們?cè)僖膊挥檬髽?biāo)一條一條的從網(wǎng)頁(yè)上拷貝信息。省去我們的行為相當(dāng)于下面的步驟:
在寫之前先看一下邏輯問(wèn)題,希望每個(gè)小伙伴都養(yǎng)成這個(gè)好習(xí)慣,整理邏輯后在開(kāi)始寫代碼:
了解了上面邏輯關(guān)系,下面我們以組件:unllib2為例
創(chuàng)建一個(gè)test01.py,輸入的代碼如下:
可以看到獲取一個(gè)url的信息代碼只需要4行代碼。執(zhí)行的時(shí)候代碼如下:
結(jié)果如下:
我們?cè)跒g覽頁(yè)上打開(kāi)你爬的主頁(yè),右鍵選擇“查看源代碼”,我們會(huì)發(fā)現(xiàn),跟剛剛打印出來(lái)的是一樣的。這說(shuō)明成功啦!成功幫我們把網(wǎng)頁(yè)首頁(yè)的全部代碼爬下來(lái)了。
以上全部步驟就是爬蟲(chóng)的過(guò)程,出于認(rèn)真負(fù)責(zé)的態(tài)度。解釋一下這4行代碼的作用:
這一步是把組件urllib2引入進(jìn)來(lái),給我們提供使用。
這里是調(diào)用組件urllib2庫(kù)中的urlopen方法,這個(gè)方法就是接受一個(gè)url地址,網(wǎng)址你可以隨便填寫你要爬的網(wǎng)址就可以了。然后請(qǐng)求后得到的回應(yīng)封裝到一個(gè)response對(duì)象中。
這里是調(diào)用response對(duì)象的read()方法,把請(qǐng)求回應(yīng)的內(nèi)容以字符串的形式給html變量。
這里是將字符串打出來(lái)而已。
以上可知python代碼對(duì)于一個(gè)基本的url請(qǐng)求是非常簡(jiǎn)單的。
dokerfike如何讓docker體積更小
Dockerfile減少構(gòu)建鏡像大小的方法
這幾天基于Dockerfile構(gòu)建應(yīng)用需要的特殊的鏡像,比如Nginx需要add很多module的,就需要在鏡像內(nèi)編譯和做build.
通過(guò)Dockerfile構(gòu)建鏡像時(shí),很容易把鏡像構(gòu)建得很大。
從通俗得原來(lái)上來(lái)說(shuō),一次RUN形成新的一層,如果沒(méi)有在同一層刪除,無(wú)論文件是否最后刪除,都會(huì)帶到下一層。
所以建議如下:
盡量在同一層運(yùn)行更多的命令,比如
RUNcp/usr/local/aa.tar.gz/opt
RUNtarxvf/opt/aa.tar.gz
RUNrm-rf/opt/aa.tar.gz
可以修改成
RUNcp/usr/local/aa.tar.gz/opt&&\
tarxvf/opt/aa.tar.gz&&\
rm-rf/opt/aa.tar.gz
如果在鏡像中通過(guò)yum安裝軟件包,盡量在一行裝完,不要多行,同樣安裝完后運(yùn)行,cleanall后對(duì)大小影響很大
yumcleanall
RUNyum-y—enablerepo=rpmforge-extrasinstallphp\
php-pecl-xdebug\
php-soap\
php-mysql\
php-gd\
php-process\
php-xml\
php-mbstring\
mysql-server\
php-zendframework\
htmlpurifier\
jpgraph-tuleap\
php-pear-Mail-mimeDecode\
rcs\
cvs\
php-guzzle\
php-password-compat\
unzip\
tar\
subversion\
bzip2\
php-pecl-xdebug\
git\
&&yumcleanall
如果安裝軟件包多,可以省下幾百兆
python操作excel真的那么神奇嗎
所謂的神奇只不過(guò)是提供了大量第三方包,類似vba,將許多繁瑣的手動(dòng)操作轉(zhuǎn)換為代碼操作,提高了處理速度和工作效率,下面我簡(jiǎn)單介紹3個(gè)常用的pythonexcel處理包,感興趣的朋友可以嘗試一下:
xlrd和xlwt這是2個(gè)非常基礎(chǔ)的pythonexcel處理包,在日常excel處理中經(jīng)常會(huì)用到,其中xlrd專門用去讀取excel,xlwt專門用于寫入excel,常見(jiàn)的單元格讀寫/合并、樣式背景色的設(shè)置以及行高/列高的設(shè)置等這2個(gè)包都可以輕松完成,對(duì)于一些繁瑣、重復(fù)的操作可以使用一下這2個(gè)包,簡(jiǎn)單易學(xué),非常容易入門,而且官方自帶有非常詳細(xì)的教程,非常適合初學(xué)者學(xué)習(xí)和掌握:
openpyxl這也是桌面端比較常用的一個(gè)pythonexcel處理庫(kù),和xlrd、xlwt類似,openpyxl融合了excel的讀寫,因此不需要單獨(dú)分開(kāi)編碼,常見(jiàn)的樣式設(shè)置、圖片/表格插入、公式/函數(shù)使用、單元格合并等基本操作這個(gè)模塊都可以輕松完成,如果你有一定python基礎(chǔ),熟悉openpyxl來(lái)說(shuō)非常容易,官方有非常詳細(xì)的教程示例,所有代碼都可以直接運(yùn)行,需要注意的是openpyxl只適用于xlsx/xlsm,xls并不適用:
pandas這是python針對(duì)數(shù)據(jù)處理專門提供的一個(gè)第三方模塊,在日常實(shí)驗(yàn)、報(bào)表等數(shù)據(jù)處理中經(jīng)常會(huì)用到,內(nèi)置了大量函數(shù)和類型(series/dataframe),可以輕松處理各種常見(jiàn)的文件格式,包括excel、csv、json、txt等,操作靈活、功能強(qiáng)大,只需簡(jiǎn)單幾行代碼就可快速加載處理數(shù)據(jù),還支持?jǐn)?shù)據(jù)可視化,在數(shù)據(jù)分析方面有著非常廣泛的應(yīng)用,非常值得學(xué)習(xí),可以大大減少工作量,提高工作效率:
當(dāng)然,除了以上3個(gè)常見(jiàn)的pythonexcel處理庫(kù),xlutils等也都非常不錯(cuò),基本使用方式和原理都是一樣的,官方也有參考代碼和示例,只要你熟悉一下很快就能掌握的,至于選擇哪個(gè)包,簡(jiǎn)單一些就是xlrd/xlwt、openpyxl,復(fù)雜一些就是pandas,神奇倒不至于,就是處理起來(lái)更方便而已,網(wǎng)上也有相關(guān)教程和資料,介紹的非常詳細(xì),感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對(duì)你有所幫助吧,也歡迎大家評(píng)論、留言進(jìn)行補(bǔ)充。