1.Python基礎

1.

print( )
print(*objects, sep=' ', end='\n', file=sys.stdout)

>>>print('Hello', end='')
>>>print('World')
HelloWorld

2. 控制流

2.1、and操作符真值表:

True    and       True            True
True    and       False           False
False   and       True            False
False   and       False           False

or操作符真值表:
True    or        True            True
True    or        False           True
False   or        True            True
False   or        False           False

not操作符真值表:
not     True      False
not     False     True

Python 先求值 not 操作符,然后是 and 操作符,然后是 or 操作符。

2.2、range(start, end, scan)

start: 計數(shù)從start開始。默認是從0開始。
end: 計數(shù)到end結(jié)束,但不包括end。
scan: 每次跳躍的間距,默認為1。

2.3、sys.exit()提前結(jié)束程序

3. 函數(shù)

3.1、自定義函數(shù)def:

def function_name(parameters):
    expressions

3.2、返回值和return語句:

return 關鍵字
返回值只有打印才會顯示出來。對于無返回值的函數(shù),將默認返回None。
補充:random.randint( )
生成一個指定范圍內(nèi)的整數(shù)。其中參數(shù)a是下限,參數(shù)b是上限,生成的隨機數(shù)[a,b]。

3.3、global

聲明變量作用域,python如果想使用作用域之外的全局變量,則需要加global前綴。在局部不僅可以使用全局變量還可以修改全局變量。

4. 列表(可變數(shù)據(jù))

4.1、列表list

['a', 'b', 'c']
列表索引從0開始。
切片索引坐標,[a,b)
del spam[0]刪除列表數(shù)據(jù)

4.2、增強賦值操作

spam += 1 spam = spam + 1
spam -= 1 spam = spam - 1
spam *= 1 spam = spam * 1
spam /= 1 spam = spam / 1
spam %= 1 spam = spam % 1

4.3、列表方法

.index( ):     傳入一個值,如果該值存在于列表中,就返回它的下標。
.append( ):    將參數(shù)添加到列表末尾
.extend(lst):  向列表中添加序列。將序列的元素依次添加到列表的最后
.insert( ):    第一個參數(shù)是新值的下標,第二個參數(shù)是要插入的新值。
.remove():     傳入一個值,它將從被調(diào)用的列表中刪除。如果該值在列表中出現(xiàn)多次,只有第一次出現(xiàn)
               的值會被刪除。
.pop(idx) :   會將索引 idx 處的元素刪除,并返回這個元素。
.sort():       排序
.sorted():   不會改變原來的list,而是會返回一個新的已經(jīng)排序好的list
.reverse() :  會將列表中的元素從后向前排列。

注意:
1、當場排序,sort()方法當場對列表排序。不要寫出spam = spam.sort() 這樣的代碼,試圖記錄返回值。
2、不能對既有數(shù)字又有字符串值的列表排序
3、按照sort()方法對字符串排序時, 使用“ASCII 字符順序”, 而不是實際的字典順序。這意味著大寫字母排
在小寫字母之前。
注意:對于可變對象,對象的操作不會重建對象,而對于不可變對象,每一次操作就重建新的對象。

4.4、列表推導式

[表達式 for 變量 in 列表]

4.5、元組tuple(不可變數(shù)據(jù))

('hello', 42, 0.5) ('hello',)
元組和列表的區(qū)別:
1.元組是圓括號。
2.元組哪怕只有一個元素,也要在元素后面加上逗號。
3.元組是不可變的數(shù)據(jù)類型。

5. 字典(可變數(shù)據(jù)類型)

5.1、字典:

>>> myCat = {'size': 'fat', 'color': 'gray', 'disposition': 'loud'}

5.2、方法:

dict.keys( ):     返回一個包含字典中鍵的列表
dict.values( ):   返回一個包含字典中所有值的列表
dict.items( ):    返回一個包含字典中(鍵, 值)對元組的列表
                  這些方法返回的值不是真正的列表,它們不能被修改,沒有append()方法。但這些
                  數(shù)據(jù)類型(分別是 dict_keys、dict_values 和 dict_items )可以用于for 
                  循環(huán)。
del a["key"]:     刪除字典中特定的鍵值對
d.update(newd):   將字典newd中的內(nèi)容更新到d中去。
>>person = {}
person['first'] = "Jmes"
person['last'] = "Maxwell"
person['born'] = 1831
>>print person
{'born': 1831, 'last': 'Maxwell', 'first': 'Jmes'}

把'first'改成'James',同時插入'middle'的值'Clerk':

>>person_modifications = {'first': 'James', 'middle': 'Clerk'}
person.update(person_modifications)
>>print person
{'middle': 'Clerk', 'born': 1831, 'last': 'Maxwell', 'first': 'James'}
.get(key1, defaults=None):   返回指定鍵的值,如果鍵不在字典中,默認無
返回值。
d.pop(key, default = None):  刪除并返回字典中鍵 key 對應的值,如果沒有這個鍵,
                             返回 default 指定的值(默認是 None )。
.setdefault(para1,para2):   傳遞給該方法的第一個參數(shù),是要檢查的鍵。第二個參數(shù),是如果
                             該鍵不存在時要設置的值。如果該鍵確實存在,方法就會返回鍵的值。

5.3、漂亮打印:

pprint模塊
.pprint( )
.pformat( )不顯示出來。

6. 字符串(不可變數(shù)據(jù)類型,只是返回一個新字符串,并不改變原來的值)

6.1、處理字符串:

轉(zhuǎn)義字符(\ 倒斜杠)
\' 單引號
\" 雙引號
\t 制表符
\n 換行符
\\ 倒斜杠
原始字符串:r 在Python的string前面加上‘r’, 是為了告訴編譯器這個string是個raw string,不要轉(zhuǎn)意backslash '' 。 例如,\n 在raw string中,是兩個字符,\和n, 而不會轉(zhuǎn)意為換行符。由于正則表達式和 \ 會有沖突,因此,當一個字符串使用了正則表達式后,最好在前面加上'r'。
字符串切片:計數(shù)從0開始,區(qū)間左閉右開。
三重引號的多行字符串:1.三重引號之間所有引號、制表符或換行,都被認為是字符串的一部分。

6.2.多行字符換

Python 用一對 """ 或者 ''' 來生成多行字符串:

a = """hello world.
it is a nice day."""
print a
hello world.
it is a nice day.

6.3、字符串方法:

s.upper():         將s中的所有字母都被相應的轉(zhuǎn)換為大寫
s.lower():         將s中的所有字母都被相應的轉(zhuǎn)換為小寫
                   以上這兩種方法不會改變原來s的值
s.join():          有一個字符串列表,以s為連接符將它們連接起來。返回一個字符串,
                   其字符串序列的元素已通過str分隔符連接。
>> ','.join(['cats', 'rats', 'bats'])
'cats, rats, bats'
s.split(sep):        通過指定分隔符(默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等.)
                      對字符串s進行切片,返回分割后的字符串列表。
s.strip():             返回一個將s兩端的多余空格除去的新字符串,若添加參數(shù)則去掉參數(shù)。
s.lstrip():            返回一個將s開頭的多余空格除去的新字符串。
s.rstrip():            返回一個將s結(jié)尾的多余空格除去的新字符串。
                       s的值不會變化
s.replace(part1, part2): 將字符串s中指定的部分part1替換成想要的部分part2,并返回新的字符串。
                         此時,s的值并沒有變化,替換方法只是生成了一個新的字符串。
.rjust(width [,fillchar]:返回調(diào)用它們的字符串的填充版本,默認通過插入空格來對齊文本。
.ljust(width [,fillchar]:
.center(width [,fillchar]:
.startswith( ):      方法返回 True,如果它們所調(diào)用的字符串以該方法傳入的字符串開始。
否則,方法返回 False。
.endswith( ):        方法返回 True,如果它們所調(diào)用的字符串以該方法傳入的字符串結(jié)束。
否則,方法返回 False。
.rstrip( ):           刪除右邊的空白符
.lstrip( ):           刪除左邊的空白符
.isupper( ):          如果字符串至少有一個字母,并且所有字母都是大寫
.islower( ):          如果字符串至少有一個字母,并且所有字母都是小寫
.isalpha( ):          返回 True,如果字符串只包含字母,并且非空
.isalnum( ):          返回 True,如果字符串只包含字母和數(shù)字,并且非空;
.isdecimal( ):        返回 True,如果字符串只包含數(shù)字字符,并且非空;
.isspace( ):          返回 True,如果字符串只包含空格、制表符和換行,并且非空;
.istitle( ):          返回 True,如果字符串僅包含以大寫字母開頭、后面都是小寫字母的單詞。

6.4、pyperclip模塊 拷貝粘貼字符串

pyperclip.copy( ):向計算機的剪貼板發(fā)送文本
pyperclip.paste( ):從計算機的剪貼板接收文本

6.5、使用 () 或者 \ 來換行

a = ("hello, world. "
    "it's a nice day. "
    "my name is xxx")
a
"hello, world. it's a nice day. my name is xxx"

a = "hello, world. " \
    "it's a nice day. " \
    "my name is xxx"
a
"hello, world. it's a nice day. my name is xxx"

6.6、格式化字符串

Python用字符串的format()方法來格式化字符串。
具體用法如下,字符串中花括號 {} 的部分會被format傳入的參數(shù)替代,傳入的值可以是字符串,也可以是數(shù)字或者別的對象。

>>'{} {} {}'.format('a', 'b', 'c')
>>'a b c'

可以用數(shù)字指定傳入?yún)?shù)的相對位置:

>>'{2} {1} {0}'.format('a', 'b', 'c')
>>'c b a'

還可以指定傳入?yún)?shù)的名稱:

>>'{color} {n} {x}'.format(n=10, x=1.5, color='blue')
>>'blue 10 1.5'

也可以使用舊式的%方法進行格式化:

>>s = "some numbers:"
x = 1.34
y = 2
# 用百分號隔開,括號括起來
>>t = "%s %f, %d" % (s, x, y)
>>'some numbers: 1.340000, 2'

第7章 正則表達式

7.1、Regex正則表達式--re模塊

創(chuàng)建正則表達式:

re.compile( ):它將返回一個 Regex 模式對象(或者就簡稱為 Regex 對象)。
Regex對象的方法:
.search( ): 查找傳入的字符串,尋找該正則表達式的所有匹配,直到找到一個匹配。
用該對象的方法.group( )返回匹配文本。
.findall( ): 將返回一組字符串,包含被查找字符串中的所有匹配。如果正則表達式里無分組,
返回字符串列表;否則,返回字符串元組。

7.2、正則表達式匹配更多模式:

括號分組:(\d\d\d)-(\d\d\d-\d\d\d\d),在計分組的時候,每遇到一個左括號計數(shù)加1。
.group(number):獲取一個分組中匹配的文本。傳入0或者不傳入?yún)?shù),將返回整個匹配的文本。
.groups()返回所有括號匹配的字符,以tuple格式。
用管道匹配多個分組:
'|','或':返回第一次匹配的文本。
'?':實現(xiàn)可選匹配。表明它前面的分組在這個模式中是可選的。
'*':匹配零次或多次。即星號之前的分組,可以在文本中出現(xiàn)任意次。
'+':意味著匹配一次或多次。加號前面的分組必須至少出現(xiàn)一次。
’{number1[,number2]}':匹配特定次數(shù)。一個分組重復特定次數(shù),就在正則表達式中該分組的后面,跟上花括號包圍的數(shù)字。
Python 的正則表達式默認是貪心的,這表示在有二義的情況下,它們會盡可能匹配最長的字符串。花括號的非貪心版本匹配盡可能最短的字符串,即在結(jié)束的花括號后跟著一個問號。

7.3、字符分類

\d 0 到 9 的任何數(shù)字
\D 除 0 到 9 的數(shù)字以外的任何字符
\w 任何字母、數(shù)字或下劃線字符(可以認為是匹配“單詞”字符)
\W 除字母、數(shù)字和下劃線以外的任何字符
\s 空格、制表符或換行符(可以認為是匹配空白字符)
\S 除空格、制表符和換行符以外的任何字符

7.4、建立自己的字符

1、用方括號定義自己的字符串。
2、可以用短橫線表示字母和數(shù)字的范圍。
3、方括號內(nèi),普通正則表達式符號不會被解釋。無需在前面加轉(zhuǎn)義字符。
4、在字符分類的左方括號后加上一個插入字符'^',得到非字符類。

7.5、正則表達式操作

插入字符'^',和美元字符 '$'

'^':在正則表達式的開始處使用插入符號(^),表明匹配必須發(fā)生在被查找文本開始處。
'$':表明匹配必須發(fā)生在被查找文本結(jié)束處。

如果使用了^和$,那么整個字符串必須匹配該正則表達式。

 .(通配字符句點):    匹配除了換行之外的所有字符。只匹配一個字符。
 .* :                匹配除了換行之外的所有字符串。默認貪心模式,匹配盡可能多的文本。
.*?:                 非貪心模式
re.compile('.*',re.DOTALL):             句點匹配包括換行符在內(nèi)的所有字符。
re.compile('.*',re.IGNORECASE或re.I ):  忽略大小寫。
re.compile('.*'re.VERBOSE):              略正則表達式字符串中的空白符和注釋。

7.6、sub()方法替換字符串

第一個參數(shù)是一個字符串,用于取代發(fā)現(xiàn)的匹配。第二個參數(shù)是一個字符串。sub()方法返回替換完成后的字符串。

>> namesRegex = re.compile(r'Agent \w+')
>> namesRegex.sub('CENSORED', 'Agent Alice gave the secret documents to Agent Bob.')
'CENSORED gave the secret documents to CENSORED.'
在sub()的第一個參數(shù)中,可以輸入\1、\2、\3...。表示在替換中輸入分組1、2、3...的文本”。
>> agentNamesRegex = re.compile(r'Agent (\w)\w*')
>> agentNamesRegex.sub(r'\1****', 'Agent Alice told Agent Carol that Agent
Eve knew Agent Bob was a double agent.')
A**** told C**** that E**** knew B**** was a double agent.'

8 OS

os.getcwd( ):  返回當前工作目錄。
os.chdir( ):   改變當前工作目錄。
os.makedirs( ):創(chuàng)建新文件夾。
os.listdir(path):            將返回路徑下文件名字符串的列表。
os.rename(src,dst)           src -- 要修改的目錄名;dst -- 修改后的目錄名
os.path.join:             將多個路徑組合后返回,第一個以/開頭的參數(shù)開
始拼接,之前的參數(shù)全部丟棄。以上情況為先,在上一種情況確保情況下,若出現(xiàn)”./”開頭的參數(shù),
會從”./”開頭的參數(shù)的上一個參數(shù)開始拼接。
os.path.abspath(path):       將返回參數(shù)的絕對路徑的字符串 
os.path.isabs(path):         判斷路徑是否為絕對路徑。
os.path.relpath(path):       將返回路徑的字符串。
os.path.dirname(path):       將返回一個字符串,它包含 path 最后一個斜杠之前的所有內(nèi)容。 
os.path.basename(path):      將返回一個字符串,它包含 path 最后一個斜杠之后的所有內(nèi)容。 
os.path.split( ):            將path分割成目錄和文件名二元組返回。
os.path.getsize(path):       將返回 path 參數(shù)中文件的字節(jié)數(shù)。
os.path.exists(path):        如果 path 參數(shù)所指的文件或文件夾存在,將返回 True否則返回False。
os.path.isfile(path):        如果 path 參數(shù)存在,并且是一個文件將返回True,否則返回False。
os.path.isdir(path):         如果 path 參數(shù)存在,并且是一個文件夾,將返回 True否則返回False。

讀模式

open( ):                    函數(shù)返回一個 File 對象。
.read()方法:                將整個文件的內(nèi)容讀取為一個字符串值。
.readlines()方法:           從該文件取得一個字符串的列表。列表中的每個
                            字符串就是文本中的每一行。

寫模式

.open( ,w):         如果傳遞給 open()的文件名不存在,寫模式和添加模式都會創(chuàng)建一個新
                    的空文件。在讀取或?qū)懭胛募?,調(diào)用 close()方法,然后才能再次打開該文件。
.write( ):          寫入字符串。
.close( ):          關閉文件。

刪除文件

import os
os.remove()

9

9.1、shutil模塊

shutil.copy(source,destination):  將路徑 source 處的文件復制到路徑 destination處的文件夾
                                  (source 和 destination都是字符串)。如果 destination 
                                  是一個文件名,它將作為被復制文件的
                                  新名字。該函數(shù)返回一個字符串,表示被復制文件的路徑。
shutil.copytree(source,destination):  .............文件夾........目的地若是沒有輸入的
                                      文件名,將會自動創(chuàng)建一個。
shutil.move(soure,destination):   將路徑source處的文件夾移動到路徑destination,并返回
                                  新位置的絕對路徑的字符串。如果 destination 指向一個
                                  文件夾, source 文件將移動到 destination 中,并保持
                                 原來的文件名。注意:目的地文件夾必須存在否則將拋出異常。
os.unlink(path):     將刪除 path 處的文件。
os.rmdir(path):      將刪除 path 處的文件夾。該文件夾必須為空,其中沒有任何文件和文件夾。
shutil.rmtree(path): 將刪除 path 處的文件夾,它包含的所有文件和文件夾都會被刪除。
刪除不可恢復。
第三方模塊send2trash可以將文件和文件夾發(fā)送到回收站
send2trash.send2trash(str)

9.2、遍歷目錄樹

os.walk( ):
1.當前文件夾名稱的字符串。
2.當前文件夾中子文件夾的字符串的列表。
3.當前文件夾中文件的字符串的列表。
所謂當前文件夾,是指 for 循環(huán)當前迭代的文件夾。程序的當前工作目錄,不會因為 os.walk()而改變。

import os
for folderName, subfolders, filenames in os.walk('C:\\delicious'):
print('The current folder is ' + folderName)
for subfolder in subfolders:
print('SUBFOLDER OF ' + folderName + ': ' + subfolder)
for filename in filenames:
print('FILE INSIDE ' + folderName + ': '+ filename)
print('')
The current folder is C:\delicious
SUBFOLDER OF C:\delicious: cats
SUBFOLDER OF C:\delicious: walnut
FILE INSIDE C:\delicious: spam.txt
The current folder is C:\delicious\cats
FILE INSIDE C:\delicious\cats: catnames.txt
FILE INSIDE C:\delicious\cats: zophie.jpg
The current folder is C:\delicious\walnut
SUBFOLDER OF C:\delicious\walnut: waffles
The current folder is C:\delicious\walnut\waffles
FILE INSIDE C:\delicious\walnut\waffles: butter.txt.

9.3、zipfile模塊壓縮文件

1.讀取ZIP文件,zipfile.ZipFile( )創(chuàng)建一個ZipFile對象

>> exampleZip = zipfile.ZipFile('example.zip')
>> exampleZip.namelist()
['spam.txt', 'cats/', 'cats/catnames.txt', 'cats/zophie.jpg']
>> exampleZip.close()

2.解壓ZIP文件,調(diào)用ZipFile對象的方法。.extractall('目標文件夾名稱').extract('名稱','目的地' )解壓單個文件。

>> import zipfile
>> exampleZip = zipfile.ZipFile('example.zip')
>> exampleZip.extractall()
>> exampleZip.close()

3.創(chuàng)建和添加到ZIP文件,ZipFile對象的方法 .write()

>> import zipfile
>> newZip = zipfile.ZipFile('new.zip', 'w')#以寫模式打開ZipFile對象。
>> newZip.write('spam.txt', compress_type=zipfile.ZIP_DEFLATED)
>> newZip.close( )

10

10.1、try except異常處理

try:
    expression
except 關鍵字:
    expression

那些可能出錯的語句被放在try子句中。如果錯誤發(fā)生,程序執(zhí)行就轉(zhuǎn)到接下來的except子句開始處。

10.2、raise拋出異常

raise 異常名稱(‘異常描述’)
raise Exception(‘異常描述’),如果沒有try和except語句覆蓋拋出異常的raise語句,程序?qū)⒈罎ⅰ?/p>

10.3、traceback模塊反向追蹤

traceback.format_exc( ):得到異常的字符串形式。

10.4、assert斷言

1.assert 條件 ,當條件為False時顯示的字符串
assert podBayDoorStatus == 'open', 'The pod bay doors need to be "open".'
2.禁用斷言,在 python 或 python3 之后和.py 文件之前加上-O 開關

10.5、日志

1、使用日志模塊
import logging
logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s - %(levelname)s - %(message)s')
logging.debug('Start of program')

2、日志級別:
級別 日志函數(shù) 描述
DEBUG logging.debug() 最低級別。用于小細節(jié)。通常只有在診斷問題時,你才會關心這些消息
INFO logging.info() 用于記錄程序中一般事件的信息,或確認一切工作正常
WARNING logging.warning() 用于表示可能的問題,它不會阻止程序的工作,但將來可能會
ERROR logging.error() 用于記錄錯誤,它導致程序做某事失敗
CRITICAL logging.critical() 最高級別。用于表示致命的錯誤,它導致或?qū)⒁獙е鲁绦蛲耆V构ぷ?/p>

3、禁用日志
logging.disable(日志級別)它就會禁止該級別和更低級別的所有日志消息。
logging. disable(logging.CRITICAL)禁用所有日志。

4、將日志記錄到文件
logging.basicConfig()
logging.basicConfig(filename='myProgramLog.txt', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - (message)s')

http://nbviewer.jupyter.org/github/lijin-THU/notes-python/blob/master/index.ipynb

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容