1. 程式人生 > 其它 >c++ 返回多個字串_python字串

c++ 返回多個字串_python字串

技術標籤:c++ 返回多個字串

2bcebd0a015ff39bfad637dfb8c867d3.png

str字串

  • 本節內容概覽
    • 1、何為str?
    • 2、轉義字元
    • 3、字串格式化
    • 4、Python字串內建函式和操作
    • 5、python字串練習

一、字串

  • Python中最常用的資料型別
  • 用來表示文字資訊
  • 在Python中用單引號、雙引號、三引號括起來的
# 單引號示例
s = 'I am jason'
print(s)
I am jason
# 三引號示例
s = '''
I
am
jason
'''
print(s)
I
am
jason

二、轉義字元

  • 用一個特殊的方法表示出一系列不方便寫出的內容,比如回車鍵、換行符、退格符(需要在字元中使用特殊字元時)
  • 藉助反斜槓字元,一旦字串中出現反斜槓,則反斜槓後面一個或者幾個字元表示已經不是原來的意思了,進行了轉義
  • 在字串中,一旦出現反斜槓就要加倍小心,可能有轉義字元出現
  • 不同系統對換行操作有不同的表示,例如
    • windows: n
    • linux: rn
  • 常用的轉義字元
    • # 在python裡,單個反斜槓表示此行未結束,處於美觀,需要下一行繼續
    • (在行尾時)續行符
    • # 反斜槓符號
    • n # 換行
    • t # 橫向製表符
    • f # 換頁
# 轉義字元案例1
# 想表達Let's Go
# 使用轉義字元
s = 'Let's Go'
print(s)

# 使用單雙引號巢狀
s = "Let's Go"
print(s)

# 表示斜杆
# 想表示c:User
s = "c:User"
print(s)

# 回車換行
# 想表達的效果是:
# I
# am
# jason

s = "Inamnjason"
print(s)
Let's Go
Let's Go
c:User
I
am
jason
# 單個斜槓案例1
# 

def myDemo(x, 
           y, 
           z):
    print("hhh")

myDemo(1, 2, 3)
hhh

三、字串格式化

  • 把字串按照一定格式進行列印或者填充
  • 格式化的分類:
    • 傳統格式化
      • 使用%進行格式化(%也叫佔位符)
      • 佔位符可以單獨使用
      • 佔位符一般只能被同類型替換,或者替換型別能被轉換成佔位符的型別
      • 需要格式化的資訊大於一個,則用括號括起來
      • 常見的佔位符有: %d 整數 %f 浮點數 %s 字串 %x 十六進位制整數
    • format
      • 使用函式形式進行格式化,代替前面的百分號
# %格式化練習1

s = "I am %s"
print(s)

print(s% "jason")

print("I am %s" % "liu")
I am %s
I am jason
I am tony9
I am liu
# %格式化練習1(多個格式化)

s = "jason is %d old"
print(s%19)

s = "jason is %.2fm heigh, %.2fkg weight"
print(s%(10.0, 10.0))
jason is 19 old
jason is 10.00m heigh, 10.000000kg weight
# format格式化練習 

# 不用指定位置,按順序讀取
# 案例1
s = "{} {}!"
print(s.format("hello", "world"))

# 案例2
s = "{} {}!".format("hello", 1)
print(s)

# 設定指定位置
# 案例3
s = "{1} {0}!".format("hello", "world")
print(s)

# 使用命名引數
# 案例4
s = "我們的是{school_name}, 網址是{url}, {teacher}"
s = s.format(school_name="test", url="test", teacher="test")
print(s)

# 使用命名引數
# 案例5
# 通過字典設定引數,但是需要解包
s = "我們的是{school_name}, 網址是{url}, {teacher}"
s_dict = {"school_name":"test", "url":"test", "teacher":"test"}
print(s.format(**s_dict))

# 對數字的格式化需要用到
s = "jason is {:.2f}m heigh, {:.2f}kg weight"
print(s.format(1.84, 65))
hello world!
hello 1!
world hello!
我們的是test, 網址是test, test
我們的是test, 網址是test, test
jason is 1.84m heigh, 65.00kg weight

四、str內建函式和操作

  • 很多語言字串使用string表示,但python中使用str表示字串
  • 字串查詢類,in, find, index, rfind
  • 字串判斷類,islower, isupper, startswith
  • 字串內容判斷,startswith/endswith
  • 字串操作類:空格剝離(strip), 字串拆分(split), 合成字串(join), 大小寫轉換(upper), 子字串替換(replace), 組合多個列表(zip)
  • 字串連線,+, *,
  • 字串可當作列表
help(str.__add__)
Help on wrapper_descriptor:

__add__(self, value, /)
    Return self+value.

4.1、字串查詢

  • in:包含
  • find: 查詢字串中是否包含一個子串,並返回子串所在的位置 (Return -1 on failure.)
  • rfind: 從從右查詢
  • index: 查詢字串中是否包含一個子串,並返回子串所在的位置(Raises ValueError when the substring is not found)
s = "I am jasonliu and jasonzhang"
s1 = "jason"
print(s.find(s1))

s2 = "tony"
print(s.find(s2))

s3 = "and"
print(s.find(s3, 17))

s4 = "jason"
print(s.rfind(s4))
5
-1
-1
18
s = "I am jasonliu and jasonzhang"
s1 = "jason"
print(s.index(s1))

s2 = "tony"
print(s.index(s2))
5



---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-69-1b293ca51502> in <module>
      4 
      5 s2 = "tony"
----> 6 print(s.index(s2))


ValueError: substring not found

4.2、字串判斷

  • 此類函式的特點一般都是用is開頭
  • islower: 判斷字串是否都是小寫字母,是則返回True,否則返回False
  • isupper: 判斷字串是否都是大寫字母,是則返回True,否則返回False
  • istitle: 判斷每個單詞開頭字母是否是大寫
  • isspace: 判斷字串是否是空字串
  • isalpha: 判斷是否是字母
    • 此函式預設的前提是字串至少包含一個字元,如果沒有,統一返回False
    • 漢字被認為是alpha,所以,次函式不能作為區分英文字母還是漢字的標識,區分中英文請使用unicode碼
    • 主要是有區別,防止被坑
  • isdigit, isnumeric, isdecimal 三個判斷數字的函式
    • 此類函式不建議使用,在後期爬蟲中,判斷是否是數字建議採用正則表示式 digit: True: unicode數字,byte數字,全形數字,羅馬數字 False: 羅馬數字 Error: byte數字
  • isalnum: 檢查字串是否由字母加數字組成
s = "jason"
print(s.islower())

s = "Jason"
print(s.islower())

s1 = "test is test"
print(s1.isalpha())
True
False
False
chin_num = "一二三四"
print(chin_num.isdigit())
print(chin_num.isnumeric())
print(chin_num.isdecimal())
False
True
False

4.3、內容判斷類

  • startswith/endswith:是否以xxx開頭或結尾
    • 檢測某個字串是否以某個子串開頭,常用三個引數
    • suffix:被檢查的字串,必須有
    • start:檢查範圍的開始範圍
    • end:檢查範圍的結束範圍
test1= "Jason Liu"
test2 = "Tony Liu"

s = "Jason Liu and Tony Liu"
print(s.startswith(test1, 5))
print(s.endswith(test2))
False
True

4.4、操作類

  • strip: 刪除字串兩邊的空格(預設,也可以指定需要刪除的東西),
    • lstrip/rstrip
  • split:字串拆分
  • splitlines:已換行符拆分
  • join:合成字串
  • upper:將所有字母變成大寫
  • lower:將所有字母變為小寫
  • swapcase:大小寫互換
  • replace:子字串替換
  • zip:組合多個列表
  • capitalize:首字母大寫
  • title:每個單詞首字母大寫
  • len:計算字串長度
  • count:計算字串出現次數,返回整形
c = "JJJason and tony "
print(c.strip(), end='---')
print()
print(c.strip('J'))
JJJason and tony---
ason and tony
c = "jason and tony "
print(c.split(sep=" "))
['jason', 'and', 'tony', '']
s1 = "$"
s2 = "-"
s3 = " "
ss = ["Jason liu", "Tony liu"]
print(s1.join(ss))

print(" ".join(ss))
Jason liu$Tony liu
Jason liu Tony liu
c = "jason and tony "
print(c.upper())
JASON AND TONY
c = "jason and tony"
print(c.replace("tony", "a"))
jason and a
c = ["jason", "liu", "tony"]
d = ["dana", "yd"]

for x, y in zip(c, d):
    print(x, y)
jason dana
liu yd

4.5 字串連線

  • +
  • *
c = "jason and tony"
d = " liu"
print(c+d)

print(d*3)
jason and tony liu
 liu liu liu

4.6 字串當列表

s = "jason and tony"
print(s[0])

print(id(s))
print(id(s[:]))
print(id(s[0:2]))
j
4406693552
4406693552
4406709920

五、字串練習

# "Tuling"和"tuling" 是一樣的嗎?
"Tuling" == "tuling"
False
# 字串拼接
str = "I love" + "yuandan"
print(str)
I loveyuandan
# 編寫程式,要求使用者輸入姓名並且列印"你好,姓名”

name = input("請輸入姓名:")
print("你好"+name)
請輸入姓名:jason
你好jason
# 編寫程式,要求使用者輸入1-100之間的整數並且判斷,輸入符合要求的列印"你好看”,否則列印“你醜八怪”

temp = input("請輸入一個零到一百的整數:")
if temp.isdigit():
    temp = int(temp)
    if 1 <= temp <= 100:
        print("你好看")
    else:
        print("你醜八怪")
else:
    print("你醜八怪")
請輸入一個零到一百的整數:1
你好看