1. 程式人生 > 實用技巧 >Python常用查詢(不定期更新)

Python常用查詢(不定期更新)

目錄

0.環境與配置

更改pip源

配置TensorFlow-GPU

1.基礎語法

1.1 字典(Dictionary) copy()方法

返回一個字典的淺複製。

直接賦值和 copy 的區別可以通過以下例項說明:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
dict1 =  {'user':'runoob','num':[1,2,3]}
 
dict2 = dict1          # 淺拷貝: 引用物件
dict3 = dict1.copy()   # 淺拷貝:深拷貝父物件(一級目錄),子物件(二級目錄)不拷貝,還是引用
 
# 修改 data 資料
dict1['user']='root'
dict1['num'].remove(1)
 
# 輸出結果
print(dict1)
print(dict2)
print(dict3)

例項中 dict2 其實是 dict1 的引用(別名),所以輸出結果都是一致的,dict3 父物件進行了深拷貝,不會隨dict1 修改而修改,子物件是淺拷貝所以隨 dict1 的修改而修改。

{'num': [2, 3], 'user': 'root'}
{'num': [2, 3], 'user': 'root'}
{'num': [2, 3], 'user': 'runoob'}

1.2 列表(list)的extend方法

注意exten的兩種使用方法,以及與append方法的區別:

a=[0,0,1,1]
b=[]
b.extend([a[0:2]])
b.extend([a[2:4]])
print(b) #[[0, 0], [1, 1]]
c=[]
c.extend(a[0:2])
c.extend(a[2:4])
print(c) #[0, 0, 1, 1]
d=[]
d.append(a[0:2])
d.append(a[2:4])
print(d) #[[0, 0], [1, 1]]

2.檔案讀寫和輸入輸出

2.1 open方法

  • 用open方法讀html
with open('E:\\test2.html','r',encoding="utf-8") as f:
# 加上引數encoding即可,不然遇到中文會遇到編碼問題
  • 使用open的三種read方法
str=f.read() #一次性讀取檔案的所有內容放在記憶體中,結果是一個字串
line=f.readline() #逐行讀取
list=f.readlines() #一次性讀取文字的所有內容,結果是一個list

f = "lucky.txt"
a =8
with open(f,"w") as file:   #”w"代表著每次執行都覆蓋內容
    for i in range(a):
        file.write(str(i) + "d" + " "+"\n")
    a +=1

2.2 遍歷資料夾下所有檔案

for root, dirs, files in os.walk(file):
        # root 表示當前正在訪問的資料夾路徑
        # dirs 表示該資料夾下的子目錄名list
        # files 表示該資料夾下的檔案list
        # 遍歷檔案
        for f in files:
            print(os.path.join(root, f))
        # 遍歷所有的資料夾
        for d in dirs:
            print(os.path.join(root, d))

也可以用os.listdir(path)

import os, sys
# 開啟檔案
path = "/var/www/html/"
dirs = os.listdir( path )
# 輸出所有檔案和資料夾
for file in dirs:
   print file

2.3 建立資料夾

os.mkdir('c:/Users/13770/Desktop/a') #不包含子目錄
os.mkedirs('c:/Users/13770/Desktop/a/b') #不包含子目錄

2.4 清空檔案內容

f.seek(0) #找到檔案頭
f.truncate()   #清空檔案

3.其他技巧

3.1建立固定長度的空列表

features = [[] for _ in range(6)]
print(features)  # [[], [], [], [], [], []]

3.2 打亂資料

dict={
    'im':[[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]],
    'bt':[[10],[11],[12],[13],[14],[15],[16],[17],[18],[19]]
}

index=[i for i  in range(0,len(dict['im'])-1,2)]
random.shuffle(index)
temp=[]
for ind in index:
    temp.extend([ind,ind+1])
index=temp
print(index)

for key in dict.keys():
    temp=[]
    for i in index:
        temp.append(dict[key][i])
    dict[key]=temp

4.字串處理

4.1 使用正則表示式從字串中提取數字

import re
\d 匹配單個數字
\d+ 匹配1次或多次單個數字
\d* 匹配0次或多次單個數字
\.? 匹配小數點,因為不確定有沒有小數點,所以加上問號,換言之,它匹配0次或1次‘.’
匹配整數可以用:re.findall(r"\d+",string)
匹配小數可以用:re.findall(r"\d+\.?+\d*",string)
返回結果是一個list陣列

4.2 簡單字串和數字相互轉換

# str <==> int
i = 10
s = str(i)
i = int(s)
# str <==> float
st = '.4'
t = float(st)
st= str(t)

4.3 轉義字元

  • \n 是newline,即游標移到下一行行首。
  • \r 是Carriage Return,即游標回到本行行首。