❶ python具體在文本處理上怎麼用
在諸多軟體壓縮包中或是項目壓縮包中都會存在一個readme.txt文件,其中的內容無非是對軟體的簡單介紹和注意事項。但是在該文本文件中,內容沒有分段分行,是非常冗雜地混在一起。當然處理手段多種多樣,而我正好嘗試利用Python解決這個問題。另外,這些內容或許對將來爬蟲爬下的內容進行處理也是有些幫助的,只不過面對的混亂和處理需求不同而已。
這里的思路很簡單,打開一個文本文檔,對其中具有兩個及兩個以上的空格進行處理,即產生換行,另外出現很多的『=』和『>>>』也進行處理。這里我嘗試處理的是easyGUI文件夾中的read.txt,該文件我復制在了D盤的根目錄下。具體的實現代碼如下:
def save_file(lister):#將傳入的列表保存在新建文件中 new_file = open('new_file','w')#創建並打開文件,文件可寫 new_file.writelines(lister)#將列表lister中的內容逐行列印 new_file.close()#關閉文件,且緩存區中的內容保存至該文件中def split_file(filename):#分割原始文件 f = open(filename)#打開該原始文件,默認該文件不可修改 lister = []#初始化一個空列表 for each_line in f: if each_line[:6] != '======' and each_line[:3] != '>>>': #當連續出現六個『=』或連續三個『>』時,列印一個換行符,實際體現在else中 each_line.split(' ',1)#當出現兩個空格時,分割一次,並在下一行代碼中以一行的形式保存在列表中 lister.append(each_line) else:
lister.append('\n')
save_file(lister)
f.close()
split_file('D:\\README.txt')
代碼給出了詳細的注釋。其中得到的新的名為「new_file」的文件保存在默認的Python項目的目錄下。當然,可以通過chdir()更改工作目錄,使得文件創建在自己指定的位置。
❷ 如何用Python畫各種著名數學圖案
如何用Python畫各種著名數學圖案 | 附圖+代碼
用Python繪制著名的數學圖片或動畫,展示數學中的演算法魅力。
Mandelbrot 集
'''
A fast Mandelbrot set wallpaper renderer
reddit discussion:
'''
importnumpy asnp
fromPILimportImage
fromnumba importjit
MAXITERS=200
RADIUS=100
@jit
defcolor(z, i):
v =np.log2(i +1-np.log2(np.log2(abs(z)))) /5
ifv <1.0:
returnv**4, v**2.5, v
else:
v =max(0, 2-v)
returnv, v**1.5, v**3
@jit
defiterate(c):
z =0j
fori inrange(MAXITERS):
ifz.real*z.real +z.imag*z.imag >RADIUS:
returncolor(z, i)
z =z*z +c
return0, 0,0
defmain(xmin, xmax, ymin, ymax, width, height):
x =np.linspace(xmin, xmax, width)
y =np.linspace(ymax, ymin, height)
z =x[None, :] +y[:, None]*1j
red, green, blue =np.asarray(np.frompyfunc(iterate, 1, 3)(z)).astype(np.float)
img =np.dstack((red, green, blue))
Image.fromarray(np.uint8(img*255)).save('mandelbrot.png')
if__name__=='__main__':
main(-2.1, 0.8, -1.16, 1.16, 1200, 960)
❸ Python大數據, 一些簡單的操作
#coding:utf-8
#file: FileSplit.py
import os,os.path,time
def FileSplit(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
number = 100000 #每個小文件中保存100000條數據
dataLine = sFile.readline()
tempData = [] #緩存列表
fileNum = 1
if not os.path.isdir(targetFolder): #如果目標目錄不存在,則創建
os.mkdir(targetFolder)
while dataLine: #有數據
for row in range(number):
tempData.append(dataLine) #將一行數據添加到列表中
dataLine = sFile.readline()
if not dataLine :
break
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tempData) #將列表保存到文件中
tFile.close()
tempData = [] #清空緩存列表
print(tFilename + " 創建於: " + str(time.ctime()))
fileNum += 1 #文件編號
sFile.close()
if __name__ == "__main__" :
FileSplit("access.log","access")
#coding:utf-8
#file: Map.py
import os,os.path,re
def Map(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
dataLine = sFile.readline()
tempData = {} #緩存列表
if not os.path.isdir(targetFolder): #如果目標目錄不存在,則創建
os.mkdir(targetFolder)
while dataLine: #有數據
p_re = re.compile(r'(GET|POST)\s(.*?)\sHTTP/1.[01]',re.IGNORECASE) #用正則表達式解析數據
match = p_re.findall(dataLine)
if match:
visitUrl = match[0][1]
if visitUrl in tempData:
tempData[visitUrl] += 1
else:
tempData[visitUrl] = 1
dataLine = sFile.readline() #讀入下一行數據
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + '\n')
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tList) #將列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Map("access\\access.log1.txt","access")
Map("access\\access.log2.txt","access")
Map("access\\access.log3.txt","access")
#coding:utf-8
#file: Rece.py
import os,os.path,re
def Rece(sourceFolder, targetFile):
tempData = {} #緩存列表
p_re = re.compile(r'(.*?)(\d{1,}$)',re.IGNORECASE) #用正則表達式解析數據
for root,dirs,files in os.walk(sourceFolder):
for fil in files:
if fil.endswith('_map.txt'): #是rece文件
sFile = open(os.path.abspath(os.path.join(root,fil)), 'r')
dataLine = sFile.readline()
while dataLine: #有數據
subdata = p_re.findall(dataLine) #用空格分割數據
#print(subdata[0][0]," ",subdata[0][1])
if subdata[0][0] in tempData:
tempData[subdata[0][0]] += int(subdata[0][1])
else:
tempData[subdata[0][0]] = int(subdata[0][1])
dataLine = sFile.readline() #讀入下一行數據
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + '\n')
tFilename = os.path.join(sourceFolder,targetFile + "_rece.txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tList) #將列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Rece("access","access")
❹ Python--math庫
Python math 庫提供許多對浮點數的數學運算函數,math模塊不支持復數運算,若需計算復數,可使用cmath模塊(本文不贅述)。
使用dir函數,查看math庫中包含的所有內容:
1) math.pi # 圓周率π
2) math.e #自然對數底數
3) math.inf #正無窮大∞,-math.inf #負無窮大-∞
4) math.nan #非浮點數標記,NaN(not a number)
1) math.fabs(x) #表示X值的絕對值
2) math.fmod(x,y) #表示x/y的余數,結果為浮點數
3) math.fsum([x,y,z]) #對櫻歲如括弧內每個元素求和,其值為浮點數
4) math.ceil(x) #向上取整,返回不小於x的最小整數
5)math.floor(x) #向下取整,返回不大於x的最大整數
6) math.factorial(x) #表示X的階乘,其中X值必須為整型,否則報錯
7) math.gcd(a,b) #表示a,b的最大公約數
8) math.frexp(x) #x = i *2^j,返回(i,j)
9) math.ldexp(x,i) #返回x*2^i的運算值,為math.frexp(x)函數的反運算
10) math.modf(x) #表示x的小數和整數部分
11) math.trunc(x) #表示x值的整數部分
12) math.sign(x,y) #表示用數值y的正負號,替換x值的正負號
13) math.isclose(a,b,rel_tol =x,abs_tol = y) #表示a,b的相似性,真值返回True,否則False;rel_tol是相對公差:雀慶表示a,b之間允許的最大差值,abs_tol是最小絕對公差,對比較接近於0有用,abs_tol必須至少為0。
14) math.isfinite(x) #表示當x不為無窮大時,返回True,否則返回脊啟False
15) math.isinf(x) #當x為±∞時,返回True,否則返回False
16) math.isnan(x) #當x是NaN,返回True,否則返回False
1) math.pow(x,y) #表示x的y次冪
2) math.exp(x) #表示e的x次冪
3) math.expm1(x) #表示e的x次冪減1
4) math.sqrt(x) #表示x的平方根
5) math.log(x,base) #表示x的對數值,僅輸入x值時,表示ln(x)函數
6) math.log1p(x) #表示1+x的自然對數值
7) math.log2(x) #表示以2為底的x對數值
8) math.log10(x) #表示以10為底的x的對數值
1) math.degrees(x) #表示弧度值轉角度值
2) math.radians(x) #表示角度值轉弧度值
3) math.hypot(x,y) #表示(x,y)坐標到原點(0,0)的距離
4) math.sin(x) #表示x的正弦函數值
5) math.cos(x) #表示x的餘弦函數值
6) math.tan(x) #表示x的正切函數值
7)math.asin(x) #表示x的反正弦函數值
8) math.acos(x) #表示x的反餘弦函數值
9) math.atan(x) #表示x的反正切函數值
10) math.atan2(y,x) #表示y/x的反正切函數值
11) math.sinh(x) #表示x的雙曲正弦函數值
12) math.cosh(x) #表示x的雙曲餘弦函數值
13) math.tanh(x) #表示x的雙曲正切函數值
14) math.asinh(x) #表示x的反雙曲正弦函數值
15) math.acosh(x) #表示x的反雙曲餘弦函數值
16) math.atanh(x) #表示x的反雙曲正切函數值
1)math.erf(x) #高斯誤差函數
2) math.erfc(x) #余補高斯誤差函數
3) math.gamma(x) #伽馬函數(歐拉第二積分函數)
4) math.lgamma(x) #伽馬函數的自然對數
❺ 怎樣用python畫對數圖
1、用python畫出log1.5(x),log(2x),log(3x)
[python]view plain
importnumpyasnp
importmath
importmatplotlib.pyplotasplt
x=np.arange(0.05,3,0.05)
y1=[math.log(a,1.5)forainx]
y2=[math.log(a,2)forainx]
y3=[math.log(a,3)forainx]
plot1=plt.plot(x,y1,'-g',label="log1.5(x)")
plot2=plt.plot(x,y2,'-r',label="log2(x)")
plot3=plt.plot(x,y3,'-b',label="log3(x)")
plt.legend(loc='lowerright')
plt.show()
2、輸出結果