字符串的轉義,格式化,拼接


  字符串轉義

  轉義符 "\"

  轉義字符串的意義在於將一些有特殊含義的字符標識為普通字符,在函數解析字符串時看到轉義字符,就不再對其做做特殊處理,而是當做普通字符打印。

  當反斜杠"\"位於行尾時,意味着換行。(一般只有在代碼過長的情況下使用)

str = 'hello,' \
      'world'
print(str)
>>> hello,world

  如果反斜杠"\"所在的位置不是行尾,並且后接特殊字符時,則意味着"\"后面的特殊字符不做特殊處理。

print("Let\'s go!")
>>>Let's go!

print('\"Hello world!\" she said')
>>>"Hello world!" she said

print("\"Hello world!\" she said")
>>>"Hello world!" she said

  如果要在代碼中間進行換行可以使用 \n

str = 'hello,\nworld'
print(str)
>>> hello,
>>> world

  # 轉義還有好多寫法用於不同的功能  暫略。。。

 


 

  字符串格式化

  使用%格式化:要插入多個變量的話,必須使用元組。

info = "my name is %s . I'm %s ." % ('xxx', 18)
print(info)
>>> my name is xxx . I'm 18 .

  如果要格式化的字符串和參數數量不同,則會拋出異常。

  如果參數過多,代碼可讀性會變得很低。而且python官方文檔不推薦使用%格式化字符串。

 

  使用str.format()格式化字符串

  str.format() 是對 %格式化 的改進,它使用普通函數調用語法,並且可以通過 __format__() 方法為對象進行擴展。

  使用str.fromat()時,替換字段用大括號進行標記。

info = "my name is {}. I'm {}.I'm from{}." .format('xxx', 18, ['china'])
print(info)
>>> my name is xxx. I'm 18.I'm from['china'].

  或者可以通過索引來以其他順序引用變量

info = "I'm from{2}. My name is {0}. I'm {1}." .format('xxx', 18, ['china'])
print(info)
>>> I'm from['china']. My name is xxx. I'm 18.

  還可以指定變量

info = "I'm from{country}. My name is {name}. I'm {age}." .format(name='xxx', age=18, country=['china'])
print(info)
>>>I'm from['china']. My name is xxx. I'm 18.

  從字典中讀取數據時還可以使用**

info = {'name': 'xxx', 'age': 18}
str = "my name is {name}. i'm {age}"
print(str.format(**info))
>>>my name is xxx. i'm 18

  在處理多個參數和更長的字符串時,可讀性依然很差。

 

  f-strings

  f-strings 是指以 f 或 F 開頭的字符串,其中以 {} 包含的表達式會進行值替換。

name = 'xxx'
age = 18
print(f"my name is {name}, i'm {age}")
>>> my name is xxx, i'm 18

  多行f-strings

name = 'xxx'
age = 18
country = 'china'
info = {
    f"my name is {name}."
    f"i'm {age}."
    f"i'm from {country}."
}

print(info)

>>>{"my name is xxx.i'm 18.i'm from china."}

  每行都要加上 f 前綴,否則格式化會不起作用。若字符串中包含括號 {},那么就需要用雙括號包裹它。

  可以用反斜杠進行轉義字符,但是不能在 f-string 表達式中使用,#也不能出現在表達式中。

print(f"You are very \"handsome\"")
>>>You are very "handsome"

print(f"{You are very \"handsome\"}")
>>>SyntaxError: f-string expression part cannot include a backslash

 


 

  字符串拼接

  加號

a = 'hello'
b = 'world'
c = a + b
print(c)
>>> helloworld

  空格

print('hello' 'world')
>>> helloworld

  目前知道唯一的用處就是在使用原始字符串要以\結尾用於拼接用。

  逗號,有坑

a = 'hello'
b = 'world'
c = a, b
print(a, b)
>>> hello world

print(c)
>>> ('hello', 'world')

  c是個元組

  還有直連的,格式化,及字符串的join方法


 

  

  長字符串,原始字符串和Unicode

  長字符串

  如果需要些一個非常長的字符串,它需要跨多行,可以使用三個引號代替普通引號。

print("""My name is xxx .
 I'm 18 years old.
 I'm from China.
 Very happy to meet all of you.""")

  因為不同的引用方式,所以可以在字符串之中同時使用單引號和雙引號,而不需要使用反斜線進行轉義。

  原始字符串

  原始字符串以r開頭,對於反斜線並不會特殊對待。在原始字符串中輸入的每個字符都會與書寫的方式保持一致。

print('Let\'s go!')
>>>Let's go!

print(r'Let\'s go!')
>>>Let\'s go!

  原始字符串最后的一個字符(位於結束引號前的那個)不能是反斜線。

print(r"Let's go!\")
>>>SyntaxError: EOL while scanning string literal

  如果原始字符串最后一個字符必須是\,那么就把\單獨作為一個字符串來處理

print(r"Let's go!"'\\')
>>> Let's go!\

  在原始字符串中可以同時使用單引號,雙引號或者三引號。

 

  Unicode字符串  

  Unicode字符串與字符串不是同一個類型。Python中的普通字符串在內部是以8位的ASCII碼形式存儲的,而Unicode字符串則存儲為16位Unicode字符,這樣可以表示更多的字符集了。

  Unicode字符串使用u前綴,就像原始字符串使用r一樣

  python3.0中,所有字符串都是Unicode字符串。

  

  

  

 

  

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM