首页 > 其他分享 >Strings字符串

Strings字符串

时间:2023-12-02 19:55:08浏览次数:32  
标签:文件 string Python print 字符串 Data Strings

字符串

参考视频链接: 【字符串】聪明办法学Python第二版_哔哩哔哩_bilibili

用两种不同的引号是为了表达一些 在引号里面要用到引号的情况!

字符串中的转义字符

前面有反斜杠 \ 的字符,叫做转义字符(只能作为一个字符)

print("双引号:\"")
双引号:"

print("反斜线:\\")
反斜线:\

print("换\n行")
换
行

# 等效于一个Tab键↓
print("这个是\t制\t表\t符\n也叫\t跳\t格\t键")
这个是	制	表	符
也叫	跳	格	键

s = "D\\a\"t\ta"
print("s =", s)
print("s 的长度为:", len(s))
s = D\a"t	a
s 的长度为: 7

repr() 函数

#现在有两个字符串
s1 = "Data\tWhale"
s2 = "Data        Whale"
#它俩看起来似乎是一样的
print("s1:", s1)
print("s2:", s2)

s1: Data	Whale
s2: Data    Whale
#但事实上两个不一样
s1 == s2
False

repr()函数可以直接看出python中字符串的内部结构,防止一些隐藏的程序进行执行

print(repr(s1))
print(repr(s2))
'Data\tWhale'
'Data        Whale'

一些字符常量

import string
print(string.ascii_letters)   # 打印ASCII码
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

print(string.ascii_lowercase)   #单独打印小写
abcdefghijklmnopqrstuvwxyz

print(string.ascii_uppercase)   #单独打印大写
ABCDEFGHIJKLMNOPQRSTUVWXYZ

print(string.digits)   # 打印数字类型
0123456789

print(string.punctuation)   # 打印python支持输出的所有特殊符号
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

print(string.printable)    # 打印python支持输出的字符
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

print(string.whitespace)   # 打印空白字符
 	

可以用上面的repr()函数来看空白字符的本质

print(repr(string.whitespace))
' \t\n\r\x0b\x0c'

一些字符串的运算

字符串的加乘,且字符串只能和字符串做加乘运算

print("abc" + "def")
print("abc" * 3)

abcdef
abcabcabc

in运算

可用于查看前面字符串是否在后面的字符串中

print("ring" in "strings")          # True
print("wow" in "amazing!")          # False
print("Yes" in "yes!")              # False
print("" in "No way!")              # True
print("聪明" in "聪明办法学 Python")  # True

字符串索引和切片

索引:可以让我们在特定位置找到一个字符

s = "Datawhale"    # 赋值给s
print(s[0])
print(s[1])
print(s[2])
print(s[3])
D
a
t
a

len(s)
9

print(s[len(s)-1]) # 最后一位了,因为从0开始的
e

print(s[len(s)])    # 越界报错

print(s[-5])   # 负数索引,字符串从右到左是从-1开始的
print(s[-4])
print(s[-3])
print(s[-2])
print(s[-1])   # 倒数第一个
w
h
a
l
e

切片:获取字符串的一部分,左边不写东西默认从0开始,右边不写东西默认执行到-1结束

s = "Datawhale"
print(s[0:4]) # 左闭右开,第五个取不到
print(s[4:9])
print(s[0:2])
print(s[2:4])
print(s[5:7])
print(s[7:9])
Data
whale
Da
ta
ha
le
print(s[:4])
print(s[4:])
print(s[:])
Data
whale
Datawhale

步长: step

print(s[:9:3]) # 经过3的长度取一次,这里默认0时取第一次
print(s[1:4:2])
Daa
aa

翻转字符串

s = "Datawhale"

print(s[::-1]) # 步长为负数就从右往左切片
elahwataD

print("".join(reversed(s)))   #join()可以把一个序列依次添加到字符串内
elahwataD

def reverseString(s):
    return s[::-1]
print(reverseString(s))
elahwataD

字符串的循环

用索引的for循环

s = "Data"
for i in range(len(s)):
    print(i, s[i])
    
0 D
1 a
2 t
3 a

也可以不用索引,用 in 运算

for c in s: # 依次取出
    print(c)
    
D
a
t
a

也可以使用 enumerate() 获得元素的序号

for i, c in enumerate(s):
    print(i, c)  
    
0 D
1 a
2 t
3 a

zip(a, b) 可以在一次循环中,分别从 ab同时取出一个元素,也可以采用enumerate()来分别获取俩个的序号

for i, (a, b) in enumerate(zip(s, reverseString(s))):  #翻转后的字符串
    print(i, a, b) #分别取出一个赋给a,b
    
0 D e
1 a l
2 t a
3 a h
4 w w
5 h a
6 a t
7 l a
8 e D

一些跟字符串相关的内置函数

str():将另外一个数据类型转换为字符串类型

len():输出一段字符串的长度

name = input("输入你的名字: ")
print("Hi, " + name + ", 你的名字有 " + str(len(name)) + " 个字!")
# 如果把str去掉就会报错,因为字符串才能被打印

输入你的名字: Datawhale
Hi, Datawhale, 你的名字有 9 个字!

chr():输出ASCII码对应的那个字符

ord():输出对应的ASCII码

两者是相反的用途

print(ord("A")) 
65

print(chr(65))
A
print(chr(ord("A") + ord(" ")))  # A的ASCII码是65,空格的ASCII码是32
a

lower()upper():大小写转换

print("YYDS YYSY XSWL DDDD".lower())
print("fbi! open the door!!!".upper())

yyds yysy xswl dddd
FBI! OPEN THE DOOR!!!

strip() :可以将字符串首尾的空格删除

replace()replace(A,B)将一个字符串中的子字符串A用B替换

print("聪明办法学 Python".replace("Python", "C"))
print("Hugging LLM, Hugging Future LLM".replace("LLM", "SD", 1)) 
# count = 1 (只换一次,后面如果还有则不会换了),如果后面没有参数,默认是全换

聪明办法学 C
Hugging SD, Hugging Future LLM

用这个方法还可以把某些字符串删除,(相当于替换为了None)

count():输出一个字符串出现的次数

print("This is a history test".count("is"))
print("This IS a history test".count("is"))   # 大小写敏感
3
2

startwith(): 检测该字符串是否是以某个字符串开头

endwith(): 检测是否以这个字符串结尾

print("Dogs and cats!".startswith("Do"))
print("Dogs and cats!".startswith("Don't"))
True
False

print("Dogs and cats!".endswith("!"))
print("Dogs and cats!".endswith("rats!"))
True
False

find():找到与子串在字符串内相对应的字符的起始位置

下面and起始位置是在序号为5的位置,返回5,如果找不到,则返回的值为-1

print("Dogs and cats!".find("and"))
print("Dogs and cats!".find("or"))
# 但是如果上面是s,s[-1]能找到,所以这里的-1仅仅表判断
5
-1

index():find():用法一致,都是用于从列表中找出某个值第一个匹配项的索引位置

但是不同的是,index():如果找不到则会错

f-string 格式化字符串

x = 42
y = 99

# 里面要用引号的话得是不同的引号
print(f'你知道 {x} + {y} 是 {x+y} 吗?')
你知道 42 + 99 是 141 吗?
其他格式化字符串的方法

如果要格式化字符串的话,f-string 是个很棒的方法,Python 还有其他方法去格式化字符串:

  • % 操作
  • format() 方法

参考资料:

字符串是不可变的,只能替换后赋值
s = "Datawhale"
s[3] = "e"      # Datewhale,常量不能直接赋值(list能,但字符串不行),报错!!!

s = s[:3] + "e" + s[4:] # 把s拆分然后重新赋值给s
print(s)	
Datewhale

基础文件操作 Filing

Open() 函数

用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数。

文件不存在则会自动创建文件

open(file, mode) 函数主要有 filemode 两个参数,其中 file 为需要读写文件的路径。mode 为读取文件时的模式,常用的模式有以下几个:

  • r:以字符串的形式读取文件。
  • rb:以二进制的形式读取文件。『readbit』
  • w:写入文件。『清空所有内容重新写入』
  • a:追加写入文件。『在指定行数插入内容(看光标指向)一般为末尾』

文件对象

open 函数会返回一个文件对象,在文件操作前,首先要了解文件对象提供了哪些常用的方法:

close(): 注意每次操作结束后,及时通过 close() 方法关闭文件

  • 在r 与rb模式下:
    • read(): 读取整个文件
    • readline(): 读取文件的一行
    • readlines(): 读取文件的所有行
  • 在 w与a模式下:
    • write():
    • writelines():
## 以 w 模式打开文件chap6_demo.txt
file = open('chap6_demo.txt', 'w')
## 创建需要写入的字符串变量 在字符串中 \n 代表换行(也就是回车)
content = 'Data\nwhale\n'
## 写入到 chap6_demo.txt 文件中
file.write(content)
## 关闭文件对象
file.close()

w 模式会覆盖之前的文件,如果你想在文件后面追加内容,可以使用 a 模式操作。

标签:文件,string,Python,print,字符串,Data,Strings
From: https://www.cnblogs.com/qiao-JF/p/17872133.html

相关文章

  • 循环,字符串,基础文件操作的用法
    Task06:循环Loopand字符串string循环Loopfor循环defsumFromMToN(m,n):total=0#注意:range(x,y)是左闭右开区间,包含x,不包含yforxinrange(m,n+1):total+=xreturntotarange(m,n)左开右闭从m遍历到n-1sumFromMToN(5,10)45r......
  • 循环与字符串
    for循环和循环范围特点:基于特定的范围,重复执行特定次数的操作for循环中循环次数range的表示其中range(x,y)表示包含x,但不包含y,即左闭右开defsumFrom(m,n):returnsum(range(m,n+1))m=5n=10sumFrom(m,n)此时输出就为45,即5+6+7+8+9+10=45range默认起始为0,即range(5)表示0-......
  • 聪明办法学python(字符串)
    字符串编写方式单引号,双引号(如果已存在一种,可用另一种引号包裹字符串,或用转义字符),三引号均可原始字符串在字符串前加"r",使字符串内的转义字符不再有效跨行字符串在每一行的末尾加上一个"\"用’‘’‘’‘或”“”“”“包裹字符串字符串字符串的运算1.字符串的......
  • Python:循环,字符串
    Python:循环,字符串循环For循环range()左闭右开区间:省略第一个参数:默认起始范围是零添加第三个参数:步长defsumfroom(m,n):total=0foriinrange(m,n+1):total+=xreturntotal#等价于下面的defsumfroom(m,n):returnsum(range(m,n+1))for循环嵌套#矩阵(补......
  • java练习:json字符串转map、arrayList
    使用依赖包:<dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.0</version></dependency>获取数据:packagecom.example......
  • 笔记06:循环和字符串
    笔记06:循环while循环whileconditionisTrue: statement(s) ifcondition: break else:continueelse:break语句跳出循环体continue语句跳出循环体并回到循环体的判断位置else语句当循环正常结束时,进行else语句for循环forvariablein可迭代对象: statement(s......
  • 循环和字符串·
    循环FOR循环和循环范围sites=["Baidu","Google","Runoob","Taobao"]forsiteinsites:print(site)以上代码执行输出结果为:BaiduGoogleRunoobTaobaoFOR循环的特点基于提供的范围,重复执行特定次数的操作range是什么东西range(x,y)是左闭右开区间,包含x,不包含ysum(ran......
  • 【leetcode 2949 统计美丽子字符串】
      importjava.util.HashMap;importjava.util.Map;classSolution{publicstaticvoidmain(String[]args){Solutionsolution=newSolution();longans=solution.beautifulSubstrings("baeyh",2);System.out.printl......
  • python循环与字符串
    循环与字符串循环for循环与范围defsumfromton(m,n):total=0forxinrange(m,n+1):#注意:range(x,y)是左闭右开区间,包含x,不包含ytotal+=xreturntotaldefsumfromton(m,n):returnsum(range(m,n+1))结果相同range(m,n,k)第一个参数m指起始范围第二个参数n指终......
  • python--循环和字符串
    Task5和6循环和字符串for循环和循环范围for循环的特点基于特定的范围,重复执行规定次数的操作deff(m,n):total=0foriinrange(m,n+1):total+=ireturntotalf(5,10)计算机会计算5+6+7+8+9+10最后输出计算结果range()函数需要注意的是这个范围是......