[转载] [转载] python 去除字符串的标点符号 用_Python成为专业人士笔记–String字符串方法

参考链接: Python字符串| 十六进制 hexdigits

参考链接: Python的字符串Strings decode 

“专业人士笔记”系列目录: 

  

 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com 

  

   

  

 更改字符串的大小写 

 Python的字符串类型提供了许多作用于字符串大小写的函数。这些包括 : 

 str.casefoldstr.upperstr.lowerstr.capitalizestr.titlestr.swapcase 

 使用unicode字符串(Python 3中的默认字符串),这些操作方法不是1:1映射或可逆的。这些操作中的大多数是为了显示或者打印需要的字符串形式,而不是为了字符串格式标准化,接下来详细介绍各个方法的使用: 

 str.casefold() 

  

  print("XßΣ".casefold()) 

# 'xssσ' 

  

  

print("XßΣ".lower()) 

# 'xßς' 

  

#Python casefold() 方法是Python3.3版本之后引入的,其效果和 lower() 方法非常相#似,都可以转换字符串中所有大写字符为小写  

  

#两者的区别是:lower() 方法只对ASCII编码,也就是‘A-Z’有效,对于其他语言(非汉语#或英文)中把大写转换为小写的情况只能用 casefold() 方法  

  

 str.upper() 

 str.upper接受字符串中的每个字符,并将其转换为对应的大写字母,例如: 

  

   "This is a 'string'.".upper() 

 # "THIS IS A 'STRING'." 

  

 str.lower() 

 str.lower的作用正好相反;它获取字符串中的每个字符,并将其转换为等价的小写字母: 

  

   "This IS a 'string'.".lower() 

 # "this is a 'string'." 

  

 str.capitalize() 

 str.capitalize 返回字符串的大写版本,也就是说,它使第一个字符大写,其余字符小写 

  

  "this Is A 'String'.".capitalize() 

# "This is a 'string'." 

  

 str.title() 

 title返回字符串的标题格式,也就是说,每个单词的开头字母都是大写的,其他字母都是小写的 

  

   "this Is a 'String'".title() 

 # "This Is A 'String'" 

  

 str.swapcase() 

  

  swapcase返回一个新的string对象,在这个对象中,所有小写字符都被转换为大写,所有大写字符都被转换为小写  

  

 当一个集合类型字符串需要处理时,使用map函数是最高效和简洁的: 

  

  print(list(map(str.upper,["These","are","some","'strings'"]))) 

  

#输出:['THESE', 'ARE', 'SOME', "'STRINGS'"] 

  

 翻译字符串中的字符 

 Python支持对str的翻译方法,该方法允许指定翻译表(用于替换)以及过程中应该删除的任何字符 

  

  translation_table = str.maketrans("aeiou", "12345")  #按位置进行翻译替换 

my_string = "This is a string!" 

  

print(my_string.translate(translation_table)) 

  

#输出:Th3s 3s 1 str3ng! 

  

 Python的字符串模块提供字符串相关的高级操作。要使用它们,请导入string模块 

  

  import string 

print(string.ascii_letters)  #所有的ascii字符 

  

#输出:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 

  

  

print(string.ascii_lowercase)  #所有的ascii小写字符 

  

#输出:abcdefghijklmnopqrstuvwxyz 

  

print(string.ascii_uppercase) # 所有的ascii大写字符  

  

#输出:'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 

  

print(string.digits)  # 所有十进制数字字符  

  

#输出:'0123456789' 

  

print(string.hexdigits) # 所有十六进制数字字符  

  

#输出:'0123456789abcdefABCDEF' 

  

print(string.octaldigits) # 所有八进制数字字符  

  

#输出:'01234567' 

  

print(string.punctuation) # C语言环境中被认为是标点符号的所有字符  

  

#输出:'!"#$%&'()*+,-./:;<=>?@[]^_`{|}~' 

  

print(string.whitespace #所有被认为是空格的ASCII字符 

  

#输出:' tnrx0bx0c' 

  

print(string.printable) #  包含所有可打印字符及字符串的组合、数字字符串ascii字母,字符串。标点符号、空格等 

  

#输出:'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[]^_`{|}~ 

 tnrx0bx0c' 

  

  

  

  

 删除字符串首尾字符 

 Python提供了三种方法,能够从字符串中删除前导字符和尾随字符:str.strip、str.rstrip和str.lstrip。这三个方法都返回一个新字符串对象,其中删除了不需要的字符 

 str.strip([chars]) 

 str.strip在给定的字符串中删除参数中包含的任何前导字符或尾随字符;如果不提供字符或不提供字符,则默认情况下删除所有空白字符。例如 : 

  

  print("      创帆云       ".strip()) 

  

 #输出:创帆云   不带任何空格  

  

 还可以删除指定的字符: 

  

  print("aaaaaaaaaaaa创帆云aaaa".strip('a')) 

  

#输出 创帆云 

  

 str.rstrip([chars]) 和 str.lstrip([chars]) 

 这些方法与str.strip()具有类似的语义和参数,它们的区别在于它们开始的方向。rstrip()从字符串的末尾开始,而str.lstrip()从字符串的开头开始 : 

  

  print("aaaaaaaaaaaa创帆云aaaa".lstrip('a')) 

#输出:创帆云aaaa 

  

print("aaaaaaaaaaaa创帆云aaaa".rstrip('a')) 

#输出:aaaaaaaaaaaa创帆云 

  

 反转字符串 

 使用内置的reverse()函数可以反转字符串,该函数接受一个字符串并以相反的顺序返回一个迭代器 : 

  

  print(reversed('hello')) 

  

#注意这里返回的是迭代器 

  

 用生成式返回反转后的字符: 

  

  print(list(c for c in (reversed('hello')))) 

  

#['o', 'l', 'l', 'e', 'h'] 

  

 当然,也可以将返回的字符重新拼装成字符串: 

  

  print("".join(reversed('hello'))) 

  

# olleh 

  

 字符串拆分 

 split(sep=None, maxsplit=-1)获取一个字符串并返回原始字符串的子字符串列表。 

 其拆分行为的不同取决于sep参数是提供的还是省略的。如果没有提供sep,那么只要有空格,就会发生分割。但是,前面和后面的空白将被忽略,多个连续的空白字符将被视为单个空白字符 

  

  print(" This is a sentence. ".split()) 

  

#输出 ['This', 'is', 'a', 'sentence.'] 

  

 按照指定的字符进行拆分: 

  

  print(" This is a sentence. ".split('s')) 

  

#输出 [' Thi', ' i', ' a ', 'entence. '] 

  

 默认情况下,分隔符每次出现时都进行分割,但是maxsplit参数限制了发生分割的次数。默认值-1表示没有限制 : 

  

  print(" This is a sentence. ".split('s',1)) 

  

# [' Thi', ' is a sentence. ']  只根据第一个出现的s字符串拆分 

  

 字符串替换 

 Python的str类型还有一个方法,可以将给定字符串中的一个子字符串替换为另一个子字符串: 

 str.replace(old, new[, count]): 

  

  print('创帆云'.replace('帆','易'))   将字符串所有的'帆'字替换成'易' 

  

#输出:创易云     

  

 其中replace的第3个参数,是指定替换多少次,如下: 

  

  print('创帆云创帆云'.replace('帆','易',1)) 

  

#输出:创易云创帆云     可以看到,只把第一个出现的汉字替换了 

  

 字符串组成 

 Python的str类型还具有一些用于分析字符串内容的方法。这些是str.isalpha, str.isdigit, str.isalnum, str.isspace。大小写可以用str.isupper、str.islower和str.istitle,下面分别讲述: 

 str.isalpha 验证给定字符串中的是否所有字符都是字母,如果是则返回True 

  

  print("Hello World".isalpha()) 

  

print("HelloWorld2".isalpha()) 

  

print("HelloWorld".isalpha()) 

  

#输出: 

 False  #有空格 

 False  #有数2 

 True    

  

 str.isupper, str.islower, str.istitle 

 这些方法验证给定字符串中的大小写 

  

  print("HeLLO WORLD".isupper()) 

  

print("HeLLO WORLD".islower()) 

  

print("Hello World".istitle()) 

  

#输出: 

 False 

 False 

 True  #有关title函数,请参阅字符串那篇文章 

  

 str.isdecimal, str.isdigit, str.isnumeric 

 isdecimal 如果只有十进制字符,则返回True,否则为False 

 isdigit 所有字符都是数字,并且其中至少有一个字符,则返回True 

 isnumeric 如果只有数字字符,则返回True,否则为False 。 

 其输出矩阵如下: 

  

  

   

  

 str.isalnum 

 这是str.isalpha和str.isnumeric的组合,如果给定字符串中的所有字符都是字母或数字,那么它的计算结果就是True 

  

  "Hello2World".isalnum() 

#True 

  

"Hello World".isalnum() 

#False 里面有空格 

  

 str.isspace 

 如果字符串只包含空白字符,则计算为True 

  

  print("trn".isspace()) 

#True,在python里上述都算空白 

  

print(" ".isspace()) 

#True 

  

print("".isspace()) 

#False 没有值不算空白 

  

 字符串包含关系 

 Python非常直观地检查一个字符串是否包含给定的子字符串。只需使用in操作符即可: 

  

  print('z' in 'zhou') 

  

#True 

  

 list列表到字符串的转换 

 字符串可以用作分隔符,使用join()方法将列表字符连接成一个字符串。例如,可以创建一个字符串,其中列表中的每个元素用空格分隔: 

  

  " ".join(["once","upon","a","time"]) 

# once upon a time 

  

#也可以用特定的字符串连接: 

"---".join(["once", "upon", "a", "time"]) 

  

#once---upon---a---time 

  

 子字符串出现次数 

 str.count(sub[, start[, end]]) 

 str.count返回一个整型数,表示子字符串在另一个字符串中出现的次数。可选参数start和end指示开始搜索和结束搜索的位置。默认情况下,将搜索整个字符串 

  

   s = "She sells seashells by the seashore." 

  

 s.count("sh")  # 2   sh在字符串中出现了2次 

  

 s.count("seashells") # 1 

  

  

 字符串填充 

 Python提供了一些函数来对字符串进行赋值填充,使得文本之间更容易对齐 

  

  a = "hello world" 

  

print(a.ljust(20,'X'))  # hello worldXXXXXXXXX 

  

print(a.rjust(20,'X'))  # XXXXXXXXXhello world 

  

 判断首尾字符 

 为了在Python中判断给定字符串的开头和结尾,可以使用方法str.startswith()和str.endswith() 

 str.startswith(prefix[, start[, end]]) 

 顾名思义,str.startswith用于判断给定字符串是否以前缀中的给定字符开头 

  

  s = "This is a test string" 

  

s.startswith("Thi")  # True 

s.startswith("thi")  # False 注意大小写不一样 

s.startswith("is", 2)  #从第2位开始判断(索引从0开始),返回 True 

  

 你还可以传一个元组作为参数: 

  

  s = "This is a test string" 

  

print(s.startswith(('This', 'That'))) 

  

#返回True ,如果是多个值,则只要满足其中一个条件即返回True 

  

 str.endswith(prefix[, start[, end]]) 

 判断是否以某个子字符串结尾,其用法与startswith完全一样 

 bytes字符串和unicode字符串转换 

 文件和网络消息的内容可以表示二进制bytes编码字符。通常需要将它们转换为unicode字符以便正确显示 

 通常,两都间的转换是通过 decode和encode两个函数完成的 

  

   s = b'xc2xa9 abc' #  s是一个字节型字符串 ,而不是python3中默认的的UTF-8字符 

 s[0]   # b'xc2' -   

 type(s) 

 # bytes  

  

 u = s.decode('utf-8') 

  

 # decode将字节型字符串转换为Unicode字符串(python3) 

  

 u[0] 

 #'u00a9' -  Unicode字符“版权标志”(U+00A9)'  

  

 type(u)  # str类型 

  

 u.encode('utf-8') 

 #b'xc2xa9 abc' 

 str.encode 会将utf-8字符串转换为二次制字节字符串 

  

 本文中代码已在python3云环境中调试通过,请勿转载,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值