這篇文章主要介紹了詳解Python中的join()函數(shù)的用法,join()函數(shù)主要用來拼接字符串,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
十年的萬州網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整萬州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“萬州網(wǎng)站設(shè)計(jì)”,“萬州網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
函數(shù):string.join()
Python中有join()和os.path.join()兩個(gè)函數(shù),具體作用如下:
join(): 連接字符串?dāng)?shù)組。將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個(gè)新的字符串
os.path.join(): 將多個(gè)路徑組合后返回
一、函數(shù)說明
1、join()函數(shù)
語法: 'sep'.join(seq)
參數(shù)說明
sep:分隔符。可以為空
seq:要連接的元素序列、字符串、元組、字典
上面的語法即:以sep作為分隔符,將seq所有的元素合并成一個(gè)新的字符串
返回值:返回一個(gè)以分隔符sep連接各個(gè)元素后生成的字符串
2、os.path.join()函數(shù)
語法: os.path.join(path1[,path2[,......]])
返回值:將多個(gè)路徑組合后返回
注:第一個(gè)絕對(duì)路徑之前的參數(shù)將被忽略
二、實(shí)例#對(duì)序列進(jìn)行操作(分別使用' '與':'作為分隔符)
seq1 = ['hello','good','boy','doiido']
print ' '.join(seq1)
hello good boy doiido
print ':'.join(seq1)
hello:good:boy:doiido
#對(duì)字符串進(jìn)行操作
seq2 = "hello good boy doiido"
print ':'.join(seq2)
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o
#對(duì)元組進(jìn)行操作
seq3 = ('hello','good','boy','doiido')
print ':'.join(seq3)
hello:good:boy:doiido
#對(duì)字典進(jìn)行操作
seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}
print ':'.join(seq4)
boy:good:doiido:hello
#合并目錄
import os
os.path.join('/hello/','good/boy/','doiido')
'/hello/good/boy/doiido'
file1_path ='E:/Users/lenovo/Desktop/中視/622召回.csv' # 源數(shù)據(jù)
格式:file1=pd.read_csv(file1_path)
pd.read_csv(file1_path,encoding='gbk')
pd.read_csv(file1_path,encoding='gbk',skiprows=[2,3])
pd.read_csv(file1_path,encoding='gbk',skiprows=lambda x:x%2==1)
pd.read_csv(file1_path,encoding='gbk',keep_default_na=False)
new=pd.DataFrame()
new.new[[0,1,2]]
new.new[0:2]
查詢結(jié)果同上
new.loc[new['激活數(shù)']1000]
loc和iloc的區(qū)別:
loc:純標(biāo)簽篩選
iloc:純數(shù)字篩選
#篩選出new的某兩列
new=new.loc[:,['phone','收件人姓名']]
#篩選new的第0,1列
new.iloc[:,[0,1]]
使用‘==’篩選-篩查“崔旭”的人(只能篩查指定明確的)
#new=file1.loc[(file1['收件人姓名']=='崔旭')|(file1['收件人姓名']=='崔霞')]
#print(new)
#使用loc函數(shù)篩選-str.contains函數(shù)-篩查名字中包含'亮'和'海'的人
#new=file1.loc[file1['收件人姓名'].str.contains('亮|海')]
#print(new)
#使用loc函數(shù)篩選-str.contains函數(shù)-篩查'崔'姓的人
#new=file1.loc[file1['收件人姓名'].str.startswitch('崔')]
#print(new)
df = df[(df['DEPOSIT_PAY_TIME_x'] .notnull() ) (df['DEPOSIT_PAY_TIME_x'] != "" )]
print("during_time(number)=0的個(gè)數(shù):",newdata[newdata['during_time(number)'] ==0].count()['during_time(number)'])
print("during_time(number)=1,2,3的個(gè)數(shù):",newdata[(newdata['during_time(number)'] 0) (newdata['during_time(number)'] 4)].count()['during_time(number)'])
print(newdata[newdata['during_time(number)'] ==0])
newdata[newdata['Team']. isin (['England','Italy','Russia'])][['Team','Shooting Accuracy']]
df.年齡.value_counts()
1.修改指定位置數(shù)據(jù)的值(修改第0行,’創(chuàng)建訂單數(shù)‘列的值為3836)
new.loc[0,'創(chuàng)建訂單數(shù)']=3836
2.替換‘小明’-‘xiaoming’
df.replace({'name':{'小明':'xiaoming'}})
3.批量替換某一列的值(把‘性別’列里的男-male,女-felmale)
方法一:df['性別']=df['性別'].map({'男':'male','女':'female'})
方法二:df['性別'].replace('female','女',inplace=True)
? ? ? ? ? ?或df['性別']=df['性別'].replace('female','女')? ? ? ? ? ? ? ? 這就是inplace的作用
? ? ? ? ? ? +df['性別'].replace('male','男',inplace=True)
4.替換列索引
df.columns=['sex','name','height','age']
或者:df.rename(columns={'性別':'sex','姓名':'name','身高':'height','年齡':'age'})
5.刪除某一列
del df['player']
6. 刪除某一列(方法二),刪除某一行(默認(rèn)axis=0刪除行,為1則刪除列)
刪除某一列(方法二)
df.drop('性別',axis=1)
刪除某一行
df.drop(1,axis=0)
file1=pd.read_csv(file1_path)
file2=pd.read_csv(file2_path)
new1=pd.DataFrame()
new1['phone']=file1['phone']
new1['contact_time']=file1['contact_time']
new2=pd.DataFrame()
new2['phone']=file2['phone']
new2['submission_audit_time']=file2['提交審核時(shí)間']
newdata=pd.merge(new1,new2,on='phone',how='left')
df=pd.concat([df1,df2],axis=0)
4.2.2 橫向表連接
df=pd.concat([df1,df2],axis=1)
df1['地區(qū)'].str.split('·',3,expand=True)
df1:
df1[['城市', '城區(qū)','地址']] = df1['地區(qū)'].str.split('·', 3, expand = True)
5.1 缺失值刪除
data.dropna(axis=0,subset = ["Age", "Sex"]) ? # 丟棄‘Age’和‘Sex’這兩列中有缺失值的行
data.dropna(how = 'all') ? ?# 傳入這個(gè)參數(shù)后將只丟棄全為缺失值的那些行
data.dropna(axis = 1) ? ? ? # 丟棄有缺失值的列(一般不會(huì)這么做,這樣會(huì)刪掉一個(gè)特征)
data.dropna(axis=1,how="all") ? # 丟棄全為缺失值的那些列
5.2 缺失值填充:pandas.DataFrame.fillna()函數(shù)
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
功能:使用指定方法填充NA/NaN值
其中inplace=True就是直接在原有基礎(chǔ)上填滿
5.3 缺失值查詢:
缺失值數(shù)量查詢:df.isnull().sum()
缺失值行查詢:df[df.isnull().T.any()]
newdata['during_time']=pd.to_datetime(newdata['submission_audit_time'])-pd.to_datetime(newdata['contact_time'])
newdata['during_time(number)']=(pd.to_datetime(newdata['submission_audit_time'])-pd.to_datetime(newdata['contact_time'])).apply(lambda x: x.days)
new=pd.DataFrame()
new=newdata[newdata['during_time(number)'] ==0]
new.to_csv(save_path,encoding='utf-8-sig')
將數(shù)據(jù)按行拆分并存儲(chǔ)到不同的csv文件中:
path='C:/Users/EDZ/Desktop/工作/2021.08.19/'
for i in range(0,30):
df.loc[[i]].to_csv(path+str(i)+'.csv',encoding='gbk')
df = df[['購藥日期', '星期','社??ㄌ?hào)','商品編碼', '商品名稱', '銷售數(shù)量', '應(yīng)收金額', '實(shí)收金額' ]]
python join函數(shù)用法如下:
join函數(shù)python就是把一個(gè)list中所有的串按照你定義的分隔符連接起來。join是string類型的一個(gè)函數(shù),用調(diào)用他的字符串去連接參數(shù)里的列表,python里面萬物皆對(duì)象,調(diào)用join函數(shù),將后面的列表里的值用逗號(hào)連接成新的字符串。str(i)foriinlist這是一個(gè)映射,就是把list中每個(gè)值都轉(zhuǎn)換成字符串。
函數(shù)含義
python中得thread的一些機(jī)制和C/C++不同:在C/C++中,主線程結(jié)束后,其子線程會(huì)默認(rèn)被主線程kill掉。而在python中,主線程結(jié)束后,會(huì)默認(rèn)等待子線程結(jié)束后,主線程才退出。
python對(duì)于thread的管理中有兩個(gè)函數(shù):join和setDaemon。
join:如在一個(gè)線程B中調(diào)用threada。join(),則threada結(jié)束后,線程B才會(huì)接著threada。join()往后運(yùn)行。
setDaemon:主線程A啟動(dòng)了子線程B,調(diào)用b。setDaemaon(True),則主線程結(jié)束時(shí),會(huì)把子線程B也殺死,與C/C++中得默認(rèn)效果是一樣的。
input和print
input()輸入函數(shù)不論輸入什么返回值都為字符串。
當(dāng)程序中有input()函數(shù)時(shí),程序會(huì)停止在input()函數(shù)這塊,這是程序阻塞。
而print的作用就是打印變量。
Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的Guido van Rossum 于1990 年代初設(shè)計(jì),作為一門叫做ABC語言的替代品。 Python提供了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),還能簡(jiǎn)單有效地面向?qū)ο缶幊?。Python語法和動(dòng)態(tài)類型,以及解釋型語言的本質(zhì),使它成為多數(shù)平臺(tái)上寫腳本和快速開發(fā)應(yīng)用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨(dú)立的、大型項(xiàng)目的開發(fā)。
#導(dǎo)入math包import math#定義點(diǎn)的函數(shù)class Point: x = 0 y = 0 z = 0 def __init__(self, x, y, z): self.x = x self.y = y self.z = z def getx(self): return self.x def gety(self): return self.y def getz(self): return self.z #定義距離函數(shù)class Getlen: def __init__(self, p1, p2): self.x = p1.getx() - p2.getx() self.y = p1.gety() - p2.gety() self.z = p1.getz() - p2.getz() self.len = math.sqrt((self.x)**2 + (self.y)**2 + (self.z)**2) def getlen(self): print("兩點(diǎn)間的距離為:" , self.len) p1 = Point(0,0,0)p2 = Point(1,1,1)g = Getlen(p1,p2)
def openFile1(self):
pathFileName, _ = QtWidgets.QFileDialog.getOpenFileName(None, 'Wybierz plik', '', 'pdf(*.pdf)')
print("PathFileName-'{}', \n_-'{}'".format(pathFileName, _))
if pathFileName:
print("Wybrany plik: ", pathFileName)
g = open(pathFileName, 'rb')
return g
def openFile2(self):
pathFileName, _ = QtWidgets.QFileDialog.getOpenFileName(None, 'Wybierz plik', '', 'pdf(*.pdf)')
print("PathFileName-'{}', \n_-'{}'".format(pathFileName, _))
if pathFileName:
print("Wybrany plik: ", pathFileName)
h = open(pathFileName, 'rb')
return h
def laczeniePdf(self,g, h):
readerLinkPage1 = PyPDF2.PdfFileReader(open(g, 'rb'))
readerLinkPage2 = PyPDF2.PdfFileReader(open(h, 'rb'))
writerLinkPage = PyPDF2.PdfFileWriter()
OutputFile = open('FinalOutput.pdf', 'wb')
writerLinkPage.appendPagesFromReader(readerLinkPage1)
writerLinkPage.appendPagesFromReader(readerLinkPage2)
writerLinkPage.write(OutputFile)
OutputFile.close()