1. 程式人生 > >Python 輸入輸出及字串處理

Python 輸入輸出及字串處理

1.Python內建函式

Built-in Functions
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object()
sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow()
super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr()
zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()  
delattr() hash() memoryview() set()  

(1)數值計算相關

divmod() 函式把除數和餘數運算結果結合起來,返回一個包含商和餘數的元組(a // b, a % b)
pow() 方法返回 x^y(x的y次方) 的值。
max() 方法返回給定引數的最大值,引數可以為序列。
round() 方法返回浮點數x的四捨五入值。
sum() 方法對系列進行求和計算。

(2)各種型別的轉換

bin() 返回一個整數 int 或者長整數 long int 的二進位制表示
oct() 函式將一個整數轉換成8進位制字串。
hex() 函式用於將10進位制整數轉換成16進位制,以字串形式表示
bool() 函式用於將給定引數轉換為布林型別,如果沒有引數,返回 False
bytearray() 方法返回一個新位元組陣列。這個數組裡的元素是可變的,並且每個元素的值範圍: 0 <= x < 256
bytes() 函式返回一個新的 bytes 物件,該物件是一個 0 <= x < 256 區間內的整數不可變序列

chr() 用一個範圍在 range(256)內的(就是0~255)整數作引數,返回一個對應的字元
float() 函式用於將整數和字串轉換成浮點數
int() 函式用於將一個字串或數字轉換為整型。
str() 函式將物件轉化為適於人閱讀的形式。

format() 格式化字串的函式
ascii() 返回一個表示物件的字串
ord()以一個字元(長度為1的字串)作為引數,返回對應的 ASCII 數值,或者 Unicode 數值

(3)類、函式相關

any() 函式用於判斷給定的可迭代引數 iterable 是否全部為 False,則返回 False,如果有一個為 True,則返回 True
all() 函式用於判斷給定的可迭代引數 iterable 中的所有元素是否都為 TRUE
classmethod()
callable() 函式用於檢查一個物件是否是可呼叫的。
compile() 函式將一個字串編譯為位元組程式碼
delattr 函式用於刪除屬性。
getattr() 函式用於返回一個物件屬性值。
setattr() 函式對應函式 getattr(),用於設定屬性值.
globals() 函式會以字典型別返回當前位置的全部全域性變數
hasattr() 函式用於判斷物件是否包含對應的屬性
issubclass() 方法用於判斷引數 class 是否是型別引數 classinfo 的子類。
vars() 函式返回物件object的屬性和屬性值的字典物件。
super() 函式是用於呼叫父類(超類)的一個方法。
locals() 函式會以字典型別返回當前位置的全部區域性變數。
memoryview() 函式返回給定引數的記憶體檢視物件(Momory view)
staticmethod 返回函式的靜態方法

(4)建立一個型別

dict() 函式用於建立一個字典。
complex() 函式用於建立一個值為 real + imag * j 的複數或者轉化一個字串或數為複數
list() 方法用於將元組或字串轉換為列表。
set() 函式建立一個無序不重複元素集.
frozenset() 返回一個凍結的集合,凍結後集合不能再新增或刪除任何元素
tuple() 函式將列表轉換為元組。
hash() 用於獲取取一個物件(字串或者數值等)的雜湊值

(5) 資料屬性

id() 函式用於獲取物件的記憶體地址
isinstance() 函式來判斷一個物件是否是一個已知的型別,類似 type()。
type() 函式如果你只有第一個引數則返回物件的型別,三個引數返回新的型別物件。
property() 函式的作用是在新式類中返回屬性值。

(6) 說明幫助

dir() 函式不帶引數時,返回當前範圍內的變數、方法和定義的型別列表;帶引數時,返回引數的屬性、方法列表
help() 函式用於檢視函式或模組用途的詳細說明
import() 函式用於動態載入類和函式 。

(7)輸入輸出

input() 函式接受一個標準輸入資料,返回為 string 型別
open() 方法用於開啟一個檔案,並返回檔案物件
print() 方法用於列印輸出

(8) 資料結構相關

filter() 函式用於過濾序列,過濾掉不符合條件的元素,返回一個迭代器物件,如果要轉換為列表,可以使用 list() 來轉換
enumerate() 函式用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中。
iter() 函式用來生成迭代器
map() 會根據提供的函式對指定序列做對映
len() 方法返回物件(字元、列表、元組等)長度或專案個數。
next() 返回迭代器的下一個專案。
repr() 函式將物件轉化為供直譯器讀取的形式。
reversed 函式返回一個反轉的迭代器
slice() 函式實現切片物件,主要用在切片操作函式裡的引數傳遞。
sorted() 函式對所有可迭代的物件進行排序操作
zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然後返回由這些元組組成的物件

(9) 其他

eval() 函式用來執行一個字串表示式,並返回表示式的值。
exec 執行儲存在字串或檔案中的 Python 語句


每個函式內建詳細的說明和應用舉例內建函式[英文版][中文版]


注意:
這些內建函式區別於某種資料型別的方法,list, set, tuple, dictionary, string等自己的方法。
比如這篇文章下面列舉的string的方法。

2.從鍵盤中獲取輸入,列印輸出

(1) 在刷題的時候躲不掉的輸入輸出

Python 3.x中使用內建input()作為輸入獲取鍵盤的輸入,返回值是string型別
常用的根據分隔符切片string的函式split()
比如:

# input: 13 1 2 3 4 5 6 7 8 9 10 20 16 18
str = input()
num = list(map(int, str.split()))
#num = [13 1 2 3 4 5 6 7 8 9 10 20 16 18]

這裡將一組以空格分隔的字元型陣列轉為數列
首先使用string的內建方法把字串分為一個個字元
這裡使用了內建函式map()把每一個字元型的陣列轉為整形
因為map()返回的是迭代器,所以使用內建函式list()將其轉為數列。

(2)使用print()列印輸出

用 help(print) 來檢視 print 函式的引數解釋

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

value: 列印的值,可多個
file: 輸出流,預設是 sys.stdout
sep: 多個值之間的分隔符
end: 結束符,預設是換行符 \n
flush: 是否強制重新整理到輸出流,預設否

格式化輸出:[例子來自runoob.com]

>>>pi = 3.141592653  
>>> print('%10.3f' % pi) #欄位寬10,精度3  
    3.142  
>>> print("pi = %.*f" % (3,pi)) #用*從後面的元組中讀取欄位寬度或精度  
pi = 3.142  
>>> print('%010.3f' % pi) #用0填充空白  
000003.142  
>>> print('%-10.3f' % pi) #左對齊  
3.142       
>>> print('%+f' % pi) #顯示正負號  
+3.141593

閱讀更多可以看這裡


python字串格式化符號:

    符   號 描述
      %c  格式化字元及其ASCII碼
      %s  格式化字串
      %d  格式化整數
      %u  格式化無符號整型
      %o  格式化無符號八進位制數
      %x  格式化無符號十六進位制數
      %X  格式化無符號十六進位制數(大寫)
      %f  格式化浮點數字,可指定小數點後的精度
      %e  用科學計數法格式化浮點數
      %E  作用同%e,用科學計數法格式化浮點數
      %g  %f和%e的簡寫
      %G  %f 和 %E 的簡寫
      %p  用十六進位制數格式化變數的地址
格式化操作符輔助指令:
符號 功能
* 定義寬度或者小數點精度
- 用做左對齊
+ 在正數前面顯示加號( + )
<sp> 在正數前面顯示空格
# 在八進位制數前面顯示零('0'),在十六進位制前面顯示'0x'或者'0X'(取決於用的是'x'還是'X')
0 顯示的數字前面填充'0'而不是預設的空格
% '%%'輸出一個單一的'%'
(var) 對映變數(字典引數)
m.n. m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)

3. 字串的處理

針對字串的string操作有很多內建函式可以方便快捷地使用

# 判斷字串是否為空
if string == '':
    print('not empty')
else:
    print('empty')
# 或者
# 字串為空是, bool取值為False
if not string:
   	print('not empty')
else:
   	print('empty')

# 返回 str 在 string 裡面出現的次數
>>> str = input()
aaa5.222 ABC
>>> str.count('a')
3
>>> str.count('2')
3

# 檢查某個字元是否包含在 string 中,返回在字串中的位置find(), index()
>>> str = input()
aaa5.222 ABC
>>> str.find('.')
4
>>> str.find('2')
5
>>> str.index('2')
5
>>> str.index('C')
11
>>> str.find('S')
-1
>>> str.index('S')
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    str.index('S')
ValueError: substring not found

#判斷大小寫,數字,大小寫轉換等
>>> str = 'A'
>>> str.isupper()
True
>>> str.islower()
False
>>> str.isdigit()
False

表格來自runboo.com

方法 描述

string.capitalize()

把字串的第一個字元大寫

string.center(width)

返回一個原字串居中,並使用空格填充至長度 width 的新字串

string.count(str, beg=0, end=len(string))

返回 str 在 string 裡面出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數

string.decode(encoding='UTF-8', errors='strict')

以 encoding 指定的編碼格式解碼 string,如果出錯預設報一個 ValueError 的 異 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'

string.encode(encoding='UTF-8', errors='strict')

以 encoding 指定的編碼格式編碼 string,如果出錯預設報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace'

string.endswith(obj, beg=0, end=len(string))

檢查字串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,如果是,返回 True,否則返回 False.

string.expandtabs(tabsize=8)

把字串 string 中的 tab 符號轉為空格,tab 符號預設的空格數是 8。

string.find(str, beg=0, end=len(string))

檢測 str 是否包含在 string 中,如果 beg 和 end 指定範圍,則檢查是否包含在指定範圍內,如果是返回開始的索引值,否則返回-1

string.format()

格式化字串

string.index(str, beg=0, end=len(string))

跟find()方法一樣,只不過如果str不在 string中會報一個異常.

string.isalnum()

如果 string 至少有一個字元並且所有字元都是字母或數字則返

回 True,否則返回 False

string.isalpha()

如果 string 至少有一個字元並且所有字元都是字母則返回 True,

否則返回 False

string.isdecimal()

如果 string 只包含十進位制數字則返回 True 否則返回 False.

string.isdigit()

如果 string 只包含數字則返回 True 否則返回 False.

string.islower()

如果 string 中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是小寫,則返回 True,否則返回 False

string.isnumeric()

如果 string 中只包含數字字元,則返回 True,否則返回 False

string.isspace()

如果 string 中只包含空格,則返回 True,否則返回 False.

string.istitle()

如果 string 是標題化的(見 title())則返回 True,否則返回 False

string.isupper()

如果 string 中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是大寫,則返回 True,否則返回 False

string.join(seq)

以 string 作為分隔符,將 seq 中所有的元素(的字串表示)合併為一個新的字串

string.ljust(width)

返回一個原字串左對齊,並使用空格填充至長度 width 的新字串

string.lower()

轉換 string 中所有大寫字元為小寫.

string.lstrip()

截掉 string 左邊的空格

string.maketrans(intab, outtab])

maketrans() 方法用於建立字元對映的轉換表,對於接受兩個引數的最簡單的呼叫方式,第一個引數是字串,表示需要轉換的字元,第二個引數也是字串表示轉換的目標。

max(str)

返回字串 str 中最大的字母。

min(str)

返回字串 str 中最小的字母。

string.partition(str)

有點像 find()和 split()的結合體,從 str 出現的第一個位置起,把 字 符 串 string 分 成 一 個 3 元 素 的 元 組 (string_pre_str,str,string_post_str),如果 string 中不包含str 則 string_pre_str == string.

string.replace(str1, str2,  num=string.count(str1))

把 string 中的 str1 替換成 str2,如果 num 指定,則替換不超過 num 次.

string.rfind(str, beg=0,end=len(string) )

類似於 find()函式,不過是從右邊開始查詢.

string.rindex( str, beg=0,end=len(string))

類似於 index(),不過是從右邊開始.

string.rjust(width)

返回一個原字串右對齊,並使用空格填充至長度 width 的新字串

string.rpartition(str)

類似於 partition()函式,不過是從右邊開始查詢

string.rstrip()

刪除 string 字串末尾的空格.

string.split(str="", num=string.count(str))

以 str 為分隔符切片 string,如果 num有指定值,則僅分隔 num 個子字串

string.splitlines([keepends])

按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果引數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。

string.startswith(obj, beg=0,end=len(string))

檢查字串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定範圍內檢查.

string.strip([obj])

在 string 上執行 lstrip()和 rstrip()

string.swapcase()

翻轉 string 中的大小寫

string.title()

返回"標題化"的 string,就是說所有單詞都是以大寫開始,其餘字母均為小寫(見 istitle())

string.translate(str, del="")

根據 str 給出的表(包含 256 個字元)轉換 string 的字元,

要過濾掉的字元放到 del 引數中

string.upper()

轉換 string 中的小寫字母為大寫

string.zfill(width)

返回長度為 width 的字串,原字串 string 右對齊,前面填充0


參考
http://www.runoob.com/python3/python3-tutorial.html
https://docs.python.org/3/library/index.html