1. python列表
#Python3.6
deflist_action():
#用單個大寫字母表示省:A,B,C,...
#用省的大寫字母開頭的兩個大寫字母表示該省的市:AA,AB,AC,BA,CA,...
sheng=["A","B","C"]
shi=["AA","AB","AC","AD",
"BA","BB","BC","BD",
"CA","CB","CC","CD"]
#查詢
deflocate_SS(sn,si):
status=[False,False]
try:
sheng.index(sn)
exceptValueError:
print("{}省市不在列表中。".format(sn))
returnstatus
else:
status[0]=True
try:
shi.index(si)
exceptValueError:
print("{}省在列表中,但{}市不在列表中。".format(sn,si))
returnstatus
else:
status[1]=True
print("{}省和{}市已經在列表中。".format(sn,si))
returnstatus
definsert_SS(sn,si):
st=locate_SS(sn,si)
ifst[0]isFalseandst[1]isFalse:
sheng.append(sn)
shi.append(si)
print("成功插入{}省,{}市。".format(sn,si))
elifst[0]andst[1]isFalse:
shi.append(si)
print("成功插入{}市。".format(si))
defdelete_SS(sn,si):
st=locate_SS(sn,si)
ifst[0]andst[1]:
shi.remove(si)
print("成功刪除{}市。".format(si))
foriteminshi:
ifitem.startswith(sn):
return
sheng.remove(sn)
print("城市列表中已無{0}省的城市,刪除{0}省。".format(sn))
else:
print("刪除失敗,輸入城市錯誤。")
while(True):
print("輸入操作如下:")
print("輸入:省份城市名查詢,查詢省份城市")
print("輸入:省份城市名添加,添加省份城市")
print("輸入:省份城市名刪除,刪除省份城市")
print("輸入:退出,退出。")
commond=input()
commond_list=commond.split()
iflen(commond_list)==1andcommond_list[0]=="退出":
exit()
eliflen(commond_list)==3:
sheng_,shi_,cmd=commond_list
ifcmd=="查詢":
locate_SS(sheng_,shi_)
elifcmd=="添加":
insert_SS(sheng_,shi_)
elifcmd=="刪除":
delete_SS(sheng_,shi_)
else:
print("輸入操作有誤,請重新輸入。")
else:
print("輸入操作有誤,請重新輸入。")
print()
if__name__=="__main__":
list_action()
2. 怎麼把python查詢到mysql資料庫里的數據列表顯示到網頁上
我採用的是MySQLdb操作的MYSQL資料庫。先來一個簡單的例子吧:
import MySQLdb
try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306)
cur=conn.cursor()
cur.execute('select * from user')
cur.close()
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
請注意修改你的資料庫,主機名,用戶名,密碼。
下面來大致演示一下插入數據,批量插入數據,更新數據的例子吧:
import MySQLdb
try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
cur=conn.cursor()
cur.execute('create database if not exists python')
conn.select_db('python')
cur.execute('create table test(id int,info varchar(20))')
value=[1,'hi rollen']
cur.execute('insert into test values(%s,%s)',value)
values=[]
for i in range(20):
values.append((i,'hi rollen'+str(i)))
cur.executemany('insert into test values(%s,%s)',values)
cur.execute('update test set info="I am rollen" where id=3')
conn.commit()
cur.close()
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
請注意一定要有conn.commit()這句來提交事務,要不然不能真正的插入數據。
運行之後我的MySQL資料庫的結果就不上圖了。
import MySQLdb
try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
cur=conn.cursor()
conn.select_db('python')
count=cur.execute('select * from test')
print 'there has %s rows record' % count
result=cur.fetchone()
print result
print 'ID: %s info %s' % result
results=cur.fetchmany(5)
for r in results:
print r
print '=='*10
cur.scroll(0,mode='absolute')
results=cur.fetchall()
for r in results:
print r[1]
conn.commit()
cur.close()
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
運行結果就不貼了,太長了。
查詢後中文會正確顯示,但在資料庫中卻是亂碼的。經過我從網上查找,發現用一個屬性有可搞定:
在Python代碼
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python') 中加一個屬性:
改為:
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python',charset='utf8')
charset是要跟你資料庫的編碼一樣,如果是資料庫是gb2312 ,則寫charset='gb2312'。
下面貼一下常用的函數:
然後,這個連接對象也提供了對事務操作的支持,標準的方法
commit() 提交
rollback() 回滾
cursor用來執行命令的方法:
callproc(self, procname, args):用來執行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數
execute(self, query, args):執行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數
executemany(self, query, args):執行單挑sql語句,但是重復執行參數列表裡的參數,返回值為受影響的行數
nextset(self):移動到下一個結果集
cursor用來接收返回值的方法:
fetchall(self):接收全部的返回結果行.
fetchmany(self, size=None):接收size條返回結果行.如果size的值大於返回的結果行的數量,則會返回cursor.arraysize條數據.
fetchone(self):返回一條結果行.
scroll(self, value, mode='relative'):移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果 mode='absolute',則表示從結果集的第一行移動value條.
3. Python編寫一個程序 可以讀取郵件日誌(mbox.txt),統計每個郵件發出的郵件數量,並輸出結果。
由於工作需要在一大堆日誌裡面提取相應的一些固定字元,如果單純靠手工取提取,數據量大,勞心勞力,於是自然而然想到了用Python做一個對應的提取工具,代替手工提取的繁雜,涉及中文字元,正則表達式不好匹配,但不是不可以實現,這個以後優化時再說。
需求描述:
一個父目錄中存在多個子文件夾,子文件夾下有多個txt形式化的Log日誌,要求從所有地方Log日誌中找出CardType=9, CardNo=0時的CardID的值,並將其統計存儲到一個文本文件中,要求CardID不能夠重復。
需求解析:
首先獲取所有的Log日誌的全路徑,根據路徑分別載入到將各個Log日誌載入到內存中進行提取分析,並將結果存儲到給定的文本文件中。
解決方案:
為了盡可能的簡潔通用,這里使用配置文件作為輸入變數的依據。不多說,上代碼:
配置文件如下:
心得體會:
1、利用Python去處理一些日常的小任務,可以很方便的完成,相比較C/C++來說,這方面生產力高了不少。
2、本文設計對中文字元的處理,所以使用正則表達式不太怎麼方便,但不少不可以,後續版本中會添加對正則的支持!
3、由於初學中,所以代碼寫的不夠精煉簡潔,後續進行再優化!
4. 用python把數據處理成列表格式
貌似每行數據都是11個么,這就好辦了。假設你的數據在d.txt中
#!/usr/local/bin/python3
pat2=list()
f=open('d.txt')
for l in f.readlines():
ll=l.strip().split(',')
ll=[int(x) for x in ll]
pat2.append([ll[1:-1],[ll[-1]]])
f.close()
print(repr(pat2))
5. 如何加入python的郵件列表
主要思路
經過對163郵箱的登陸過程的分析,其登陸過程需要:
手動登錄獲得登錄過程的信息
分析登陸過程所需的參數
向登錄界面發送登錄請求,POST 一系列參數,獲得響應,及登錄的cookie
提取登錄所需要的sid碼
利用sid碼和cookie重新請求,獲得響應,重定向網頁,獲取頁面信息
利用正則表達式提取相關信息
6. python 3 的list如何設置保證列表顯示全部內容,而不是僅顯示部分數據,其他用省略號代替
print是將之後的內容輸出到終端顯示; print >>是將內容輸出定向到某文件; 例如: fpa=open("test.txt","w")testStr="Hello World!"print >> fpa, testStrfpa.close()就是將testStr字元串寫到text.txt文件中。
7. python 列表操作
list1=[1,2,3,4,5,6,6,6,7,8,9]
newlist=[Trueifi>3andi<5elseFalseforiinlist1]
8. 求助:寫python腳本發 帶有附件的郵件, 收到郵件後,發現附件直接顯示在屏幕上了,而不是以附件形式
這是因為你的附件格式。如果是rar格式的話,可能就不會直接顯示在屏幕上了。
我以前寫郵件收件端都比你這個復雜,那時候郵件的庫支持還很差,所有的協議都要自己寫。包括附件的編碼。那個很長的BASE64寫的東西。
9. Python不顯示模塊列表問題,怎麼解決
可以這樣調用help函數,然後再help控制台里輸入moles(整個過程必須在互動式界面下完成,無法寫成腳本)
>>> help()
help> moles
稍等一會後,就會列出所有的模塊
10. python :逐一顯示指定列表中的所有元素
因為 l1.pop(0) 是 剔除左起第一個元素,並返回這個元素,就是說會沒有加print也會列印出來。
加上之前又列印了 print l1[0], 所以列印了兩遍 , 而右側的代碼只列印一次。
In[1]:l1=[1,2,3,4]
In[2]:l1.pop(0)
Out[2]:1
In[3]:l1.pop(0)
Out[3]:2
In[4]:l1.pop(0)
Out[4]:3
In[5]:l1.pop(0)
Out[5]:4