格式化字符串

87 阅读1分钟

简短的记录一下:原始字符串、f-string格式化字符串

原始字符串

原始字符串是有字母r作为前缀的字符串,这种字符串中如果包含了反斜杠,反斜杠不会被视为转义字符,而是普通字符。

# 通过反斜杠转义
print('Zophie's chair')  # Zophie's chair
print('C:\Users\AI\Desktop\Info')  # C:\Users\AI\Desktop\Info
# 原始字符串
print(r'C:\Users\AI\Desktop\Info')  # C:\Users\AI\Desktop\Info

原始字符串除了用于描述路径,还通常用于正则,如r'\n',表示匹配``和n两个字符。

m = re.match(r"(\d+).(\d+)", "24.1632")
m.groups()  # ('24', '1632')
m = re.match(r"(\d+).?(\d+)?", "24")
m.groups()  # ('24', None)
m.groups('0')  # ('24', '0')

f-string格式化

字符串格式化方法有好几种,最初使用+来连接字符串

name = 'Bob'
words = 'My name is ' + name
print(words)

后来使用%来转换字符串变量进行格式化

name = 'Bob'
age = 50
words = 'My name is %s and I am %i' % (name, age)
print(words)

再后来有了format函数,通过{}来替换变量

name = 'Bob'
age = 50
words = 'My name is {name} and I am {age}'.format(name=name, age=age)
print(words)

上面的方法都可以用,各有利弊,可能是总是感觉不完美。所以Python3.6又提供了f-string来格式化字符串。f-string与原始字符串类似,又字母f作为字符串前缀,字符串中使用{}来包裹变量即可。

name = 'Bob'
age = 50
words = f'My name is {name} and I am {age}'
print(words)

{}中除了直接使用变量,还可以使用表达式

name = 'Bob'
age = 50
words = f'My name is {name} and I am {age}, {name + str(age)}'
print(words)