[TOC]
# 輸入和輸出
python2版本中有`raw_input()`
* raw_input()的小括號中放入的是,提示信息,用來在獲取數據之前給用戶的一個簡單提示
* raw_input()在從鍵盤獲取了數據以后,會存放到等號右邊的變量中
* raw_input()會把用戶輸入的任何值都作為字符串來對待
python3版本中
沒有`raw_input()`函數,只有input()
并且python3中的input與python2中的`raw_input()`功能一樣
input是輸入,print是輸出
~~~
name = input('please enter your name: ')
print('hello,', name)
~~~
# 字符串
如果字符串里面有很多字符都需要轉義,就需要加很多\,為了簡化,Python還允許用`r''`表示`''`內部的字符串默認不轉義
如果字符串內部有很多換行,用\n寫在一行里不好閱讀,為了簡化,Python允許用`'''...'''`的格式表示多行內容
**py字符串還支持下標**
當輸入完`結束符'''和括號)`
如果寫成程序并存為.py文件,就是:
~~~
print('''line1
line2
line3''')
~~~
多行字符串`'''...'''`還可以在前面加上r使用
~~~
print(r'''hello,\n
world''')
~~~
**加r和不加`r`是有區別的**
**加r的話`\n`這些就會被轉義**
## 常用方法
### 判斷類型
| 方法 | 說明 |
| --- | --- |
| string.isspace() | 如果 string 中**只**包含空格,則返回 True |
| string.isalnum() | 如果 string 至少有一個字符并且所有字符都是字母或數字則返回 True |
| string.isalpha() | 如果 string 至少有一個字符并且所有字符都是字母則返回 True |
| string.isdecimal() | 如果 string 只包含數字則返回 True,`全角數字` |
| string.isdigit() | 如果 string 只包含數字則返回 True,`全角數字`、`⑴`、`\u00b2` |
| string.isnumeric() | 如果 string 只包含數字則返回 True,`全角數字`,`漢字數字` |
| string.istitle() | 如果 string 是標題化的(每個單詞的首字母大寫)則返回 True |
| string.islower() | 如果 string 中包含至少一個區分大小寫的字符,并且所有這些(區分大小寫的)字符都是小寫,則返回 True |
| string.isupper() | 如果 string 中包含至少一個區分大小寫的字符,并且所有這些(區分大小寫的)字符都是大寫,則返回 True |
### 查找和替換
| 方法 | 說明 |
| --- | --- |
| string.startswith(str) | 檢查字符串是否是以 str 開頭,是則返回 True |
| string.endswith(str) | 檢查字符串是否是以 str 結束,是則返回 True |
| string.find(str, start=0, end=len(string)) | 檢測 str 是否包含在 string 中,如果 start 和 end 指定范圍,則檢查是否包含在指定范圍內,如果是返回開始的索引值,否則返回 `-1` |
| string.rfind(str, start=0, end=len(string)) | 類似于 find(),不過是從右邊開始查找 |
| string.index(str, start=0, end=len(string)) | 跟 find() 方法類似,不過如果 str 不在 string 會報錯 |
| string.rindex(str, start=0, end=len(string)) | 類似于 index(),不過是從右邊開始 |
| string.replace(old_str, new_str, num=string.count(old)) | 把 string 中的 old_str 替換成 new_str,如果 num 指定,則替換不超過 num 次,返回新字符串,不會修改原字符串 |
### 大小寫轉換
| 方法 | 說明 |
| --- | --- |
| string.capitalize() | 把字符串的第一個字符大寫 |
| string.title() | 把字符串的每個單詞首字母大寫 |
| string.lower() | 轉換 string 中所有大寫字符為小寫 |
| string.upper() | 轉換 string 中的小寫字母為大寫 |
| string.swapcase() | 翻轉 string 中的大小寫 |
### 文本對齊
| 方法 | 說明 |
| --- | --- |
| string.ljust(width) | 返回一個原字符串左對齊,并使用空格填充至長度 width 的新字符串 |
| string.rjust(width) | 返回一個原字符串右對齊,并使用空格填充至長度 width 的新字符串 |
| string.center(width) | 返回一個原字符串居中,并使用空格填充至長度 width 的新字符串 |
### 去除空白字符
| 方法 | 說明 |
| --- | --- |
| string.lstrip() | 截掉 string 左邊(開始)的空白字符 |
| string.rstrip() | 截掉 string 右邊(末尾)的空白字符 |
| string.strip() | 截掉 string 左右兩邊的空白字符 |
### 拆分和連接
| 方法 | 說明 |
| --- | --- |
| string.partition(str) | 把字符串 string 分成一個 3 元素的元組 (str前面, str, str后面) |
| string.rpartition(str) | 類似于 partition() 方法,不過是從右邊開始查找 |
| string.split(str="", num) | 以 str 為分隔符拆分 string,如果 num 有指定值,則僅分隔 num + 1 個子字符串,str 默認包含 '\r', '\t', '\n' 和空格 |
| string.splitlines() | 按照行('\r', '\n', '\r\n')分隔,返回一個包含各行作為元素的列表 |
| string.join(seq) | 以 string 作為分隔符,將 seq 中所有的元素(的字符串表示)合并為一個新的字符串 |
## 字符串轉換為列表
~~~
a = '1,2,3'
split = a.split(',')
print(split) # ['1', '2', '3']
~~~
## 索引
可以用字符串后面跟下標的方式來進行索引,而下標從0開始,至字符串的 len-1 格式為:str[index],如下:
~~~
s = 'fuyong'
print(s[0]) #結果為 F
print(s[3]) #結果為 o
~~~
## 字符串的切片
可以用字符串后面跟‘’下標:下標‘:步長’的方式來對字符串進行切片,格式為 `str[index1:index2:step]`,如下:
~~~
s = 'fuyong'
print(s[0:4]) #結果為fuyo 0 是指從第一個開始切,而 4 代表從索引值為3 (即第四個字母)的地方結束,步長不寫的話默認為1,即連續切
print(s[:4]) #結果為fuyo 如果第一個索引值不寫,默認從最開始的地方切
print(s[1:]) #結果為uyong 如果第二個索引值不寫,默認從第一個索引值對應的字符開始一直切到末尾
print(s[:]) #結果為fuyong 如果兩個索引值都不寫,默認從開始到末尾
print(s[3:-1]) #結果為 n 第二個索引值為-1的話即表示最后一個字符,也就是說切分從第五個值開始到最o后一個字符之前的一個數
print(s[0:4:2]) #結果為fy 最后一個2代表步長為2,即從 0-4 的之間每隔一個切一個
print(s[4:0:-1]) #結果為noyu 步長為-1 代表倒著數,此時第一個索引值一定要比第二個索引值大。注意:此時是取到第二個索引值對應的字符的前一位
print(s[4:0:-2]) #結果為ny,步長為-2,代表倒著數,每隔1個取一個進行切
~~~
## 字符串的方法
**注意:與列表不同,對字符串操作的所有方法是生成一個新的字符串,而不是直接修改原有的字符串!!!**
### capitalize() 方法
此方法是用于將字符串的首字母轉為大寫,如下:
~~~
s = 'fuyong'
print(s.capitalize()) #結果為 Fuyong
~~~
### title()方法
此方法的作用是將用空格、數字以及其他符號分開的單詞或者其他字符串的首字母變成大寫,如下:
~~~
print('fu yong'.title()) #結果為 Fu Yong
print('fu*yong'.title()) #結果為 Fu*Yong
print('fu3yong'.title()) #結果為 Fu3Yong
print('fu%#yong'.title()) #結果為 Fu%#Yong
~~~
### swapcase()方法
此方法是用于將字符串的大小寫翻轉,如下:
~~~
print('fuyong'.swapcase()) #結果為FUYONG
print('FuYong'.swapcase()) #結果為fUyONG
~~~
### upper() 方法和 lower()方法
這兩種方法的作用是將字符串全部轉換為大寫(upper)或小寫(lower),>如下:
~~~
print('fuyong'.upper()) #結果為FUYONG
print('Fu Yong'.lower()) #結果為fu yong
~~~
### startswith()和endswith()方法:
這兩中方法是用來判斷字符串以什么開頭或者結尾,用法如下:
~~~
print('fuyong'.startswith('fu')) #結果為True
print('fuyong'.endswith('g')) #結果為True
~~~
### strip() 、lstrip()、rstrip()方法
這三種方法的作用是刪除左右兩邊的空格或者其他符號,可以指定只刪除左邊的或者只刪除右邊的,如下:
~~~
s1 = ' fuyong '
print(s1.strip()) # 結果為‘fuyong# ’ 默認是將字符串兩邊的空格全部去掉
s2 = '***fuyong**'
print(s2.strip('*')) #結果為‘fuyong’ 可以指定刪除的內容
print(s2.lstrip('*')) #結果為‘fuyong**’ 可以指定只刪除左邊的* 默認是刪除左邊 空格
print(s2.rstrip('*')) #結果為‘***fuyong’可以指定只刪除右邊的* 默認是刪除右邊 空格
~~~
### replace()方法
此方法是用來將字符串里的某些字符替換為新的字符,默認替換范圍為整個字符串,也可以指定只替換幾個。如下:
~~~
print('fu yong'.replace('yong','sir')) #結果為 ‘fu sir’
print('fu yong'.replace(' ',' xiao ')) #結果為 ‘fu xiao yong’ 參數對于空格同樣適用
print('abacad'.replace('a','x',1)) #結果為 'xbacad' 只替換第一個
~~~
### split()方法
此方法用于將一串字符串按要求進行分割,然后將分割結果返回存進一個列表中,默認以空格分割、且范圍為整個字符串,也可以指定以第幾個符號分割,如下:
~~~
1 print('fu yong'.split()) #結果為['fu', 'yong']
2 print('fuyong'.split('y')) #結果為['fu', 'ong']
3 print('fu|yong'.split('|')) #結果為['fu', 'yong']
4.print('fu*yong*ok') #結果為['fu', 'yongok'
~~~
### count()方法
此方法用來統計一個指定字符或者一串字符串在一串大字符串種出現的次數,沒有的話就返回0如下:
~~~
print('fuyong'.count('fu')) # 結果為 1
print('hello'.count('l')) # 結果為 2
print('world'.count('f')) # 結果為 0
~~~
### find()方法
此方法用來查詢一個指定字符或者一串字符串在一大串字符串中出現的位置索引,沒有的話返回-1
~~~
print('fuyong'.find('u')) #結果為 1
print('fuyong'.find('yon')) #結果為 2
print('fuyong'.find('x')) #結果為 -1
~~~
### index()方法
與find()方法類似,此方法用來查詢一個指定字符或者一串字符串在一大串字符串中出現的位置索引,只是,如果搜索不到的話會報錯
~~~
print('fuyong'.index('u')) #結果為 1
print('fuyong'.index('yon')) #結果為 2
print('fuyong'.index('x')) #這個找不到,會報錯 ValueError: substring not found
~~~
### format()方法
此方法主要用于格式化輸出,實例如下:
~~~
#第一種用法,{ } 里均為空,str.format()括號里的值跟str里{}一一對應
s1 = '{},歡迎您!現在是北京時間{}點,這里是{}的空間,點擊查看{}的博客'
m1 = s1.format('yonghu',18,'fuyong','fuyong')
print(m1)
#第二種用法,{ }里可以寫上索引值,會根據索引來索取str.format() 里的值,可以重復索取
s2 = '{0},歡迎您!現在是北京時間{1}點,這里是{2}的空間,點擊查看{2}的博客'
m2 = s2.format('yonghu',18,'fuyong')
print(m2)
#第三種用法,{ }里寫上健值,會根據健值來索取str.format()里的值,可以重復索取
s3 = '{user},歡迎您!現在是北京時間{time}點,這里是{name}的空間,點擊查看{name}的博客'
m3 = s3.format(user = 'yonghu',time = 18,name = 'fuyong')
print(m3)
#輸出結果均為: yonghu,歡迎您!現在是北京時間18點,這里是fuyong的空間,點擊查看fuyong的博客
~~~
### center()方法
此方法主要用來讓一段字符串居中顯示,并且兩邊可以填充內容以及指定總內容的長度,如下:
~~~
print('info'.center(30,'*'))
print('fuyong'.center(30,'-'))
print('29'.center(30,'-'))
print('end'.center(30,'*'))
輸出結果為:
*************info*************
------------fuyong------------
--------------29--------------
*************end**************
~~~
### isalnum()、isalpha()、isdigit()方法
這三種方法用來判斷一個字符串是否全部是字母或者數字組成、是否全部為字母組成,是否全部為數字組成
主要用來判斷用戶輸入的東西,實例如下:
~~~
while True:
name = input('請輸入您要注冊的用戶名(只能由字母組成):')
password = input('請輸入您的注冊密碼(只能由字母和數字組成)')
phonenum = input('請輸入您的電話號碼(只能由數字組成)')
if name.isalpha() and password.isalnum() and phonenum.isdigit():
break
else:
print('輸入的格式有誤,請重新輸入')
~~~
### extandtabs()方法
此方法默認將一個tab鍵變成8個空格,如果tab前面的字符長度不足8個,則補全8個,如果tab鍵前面的字符長度超過8個不足16個則補全16個,以此類推每次補全8個。如下:
~~~
user1 = 'fuyong\thenan'
user2 = 'lixiang\tzhejiang'
user3 = 'zhangsan\theilongjiang'
print(user1.expandtabs())
print(user2.expandtabs())
print(user3.expandtabs())
輸出內容為:
fuyong henan
lixiang zhejiang
zhangsan heilongjiang
~~~
### len():
計算一個字符串的長度
~~~
print(len('fuyong')) #結果為6
print(len('fuyong123')) #結果為9
~~~
### jion()
用指定字符串進行拼接
~~~
s = 'fuyong'
print('*'.join(s)) # 結果:f*u*y*o*n*g
print(' '.join(s)) # 結果:f u y o n g
print('__'.join(s)) # 結果:f__u__y__o__n__g
~~~
- python入門
- 軟件安裝
- anaconda使用
- py解釋器
- 數據類型和變量
- 編碼
- 字符串
- 格式化
- 數據類型
- 運算符
- list和tuple
- 列表生成式
- dict和set
- 切片和迭代
- set,list,tuple之間互換
- is和==
- 公共方法
- 反射操作
- 數學運算
- 類型轉換
- 對象操作
- 序列操作
- 運算符
- 內置函數
- 交互操作
- 編譯執行
- 引用
- 判斷,循環
- 生成器
- 迭代器
- 函數
- 數據類型轉換
- 空函數
- 參數
- 全局變量
- 返回值
- 遞歸
- 匿名函數
- 文件操作
- 打開和關閉
- 讀寫
- 備份文件
- 文件定位讀寫
- 重命名,刪除
- 文件夾相關操作
- with
- StringIO和BytesIO
- 操作文件和目錄
- 序列化
- 文件屬性
- 面向對象
- 類和對象
- init()方法
- 魔法方法
- 繼承
- 重寫
- 多態
- 類屬性,實例屬性
- 靜態方法和類方法
- 工廠模式
- 單例模式
- 異常
- 私有化
- 獲取對象信息
- *args和**kwargs
- property屬性
- 元類
- slots
- 定制類
- 枚舉
- 模塊
- 模塊介紹
- 模塊中的__name__
- 模塊中的__all__
- 包
- 模塊發布
- 模塊的安裝和使用
- 多模塊開發
- 標準庫
- 給程序傳參數
- 時間
- 正則表達式
- GIL
- 深拷貝和淺拷貝
- 單元測試
- pyqt
- 安裝
- 設置窗口圖標和移動窗口
- 設置氣泡提示和文本
- 圖片展示
- 文本框控件
- 按鈕控件
- 信號和槽
- 布局
- 對話框控件
- pygame
- 窗體關閉事件
- 顯示圖片
- 移動圖片
- 文本顯示
- 背景音和音效
- FPS計算
- surface
- 鼠標事件
- 函數式編程
- map/reduce
- filter
- sorted
- 返回函數
- 裝飾器
- 偏函數
- 網絡編程
- tcp
- udp
- socket
- epoll
- WSGI
- 多任務
- 多線程
- 多進程
- 分布式進程
- 協程
- 迭代器
- 生成器
- yield多任務
- greenlet
- gevent
- ThreadLocal
- asyncio
- async/await
- aiohttp
- 常用內建模塊
- datetime
- collections
- base64
- struct
- hashlib
- hmac
- itertools
- urllib
- xml
- HTMLParser
- 常用第三方模塊
- pillow
- requests
- chardet
- psutil
- 圖形界面
- 海龜繪圖
- Django
- 虛擬環境搭建
- ORM
- 模型類設計和表生成
- 模型類操作
- 關系查詢
- 后臺管理
- 配置mysql
- 字段屬性和選項
- 查詢
- 模型關聯
- 路由
- 模板
- selenium
- 基本原理
- api
- 八種定位方式
- 元素的操作
- 多標簽
- 多表單
- 鼠標,鍵盤
- 警告框
- 下拉框
- 執行js
- 等待
- cookie
- 封裝
- unittest模塊
- 斷言
- 測試用例
- jmeter
- jmeter簡介
- jmeter提取json
- 添加header和cookie
- 讀取csv/txt文件
- 配置文件
- ant