python中字符串数据处理的那些方法------=为了面试武装到牙齿=----==《《满满的硬货》》-----====实用派

举报
不良使 发表于 2022/04/01 23:47:45 2022/04/01
【摘要】 **`在写文章之前了解一下什么是字符串?`** **字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“b”,s[9]="j",这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。** **官方写的较繁琐,一句话,在python中 ""

在写文章之前了解一下什么是字符串?
字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“b”,s[9]=“j”,这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。


官方写的较繁琐,一句话,在python中 “” ‘’ 由单引号,双引号括起来的基本都是字符串,自信点,基本去掉。

了解了字符串,下面我们来了解一下字符串需要进行一些操作而衍生出来的一些方法,这里我们简称**字符串的那些方法**



**

字符串的大小写转换 upper、lower、title

**
1.1、小写变大写

# TODO                鸟欲高飞,必先展翅
# TODO                 向前的人 :Jhon
# TODO   lower   upper   大小写转换
text="my name is tsw"
b=text.upper()    #小写变大写
print(b)

结果:

MY NAME IS TSW

就是将所有的小写字符串变成大写的,需要注意的是,这是将一串字符串全部由小写变为大写*


那当字符串有大写的字母是会不会变大写呢?

text="My NAME is Tsw"
b=text.upper()    #小写变大写
print(b)

结果:

MY NAME IS TSW

所以我们得出结论,无论是大写还是小写,upper()都能把字母变成大写


**

1.2、 小写转换 lower

**

# TODO   lower   upper   大小写转换
text="My NAME is Tsw"
c=text.lower()
print(c)

结果:

my name is tsw

就是将大写变小写,如果本来就是小写还是会转换一下去覆盖之前的小写



除此之外有没有字符串中首字母大写呢,结果当然是肯定的


1.3、字符串中首字母大写 title

text="my name is tsw"
a=text.title()
print(a)

结果:

My Name Is Tsw

我们可以发现title将原来的字符串首字母大写了,嗯嗯~~,可以这样理解,就相当于字符串中单词,title指文章标题,就相当于字符串的首字母。如果实在无法理解就背下来,一回生,二回熟。



**

2 、swapcase() 不区分大小写

info_one = 'Python Code Is Good'
info_two = 'PYTHON DJANGO FLASK'
info_three = 'python web so easy'

print(info_one.swapcase())
print(info_two.swapcase())
print(info_three.swapcase())

结果:

pYTHON cODE iS gOOD
python django flask
PYTHON WEB SO EASY

在进行项目是会进行判断操作,例如在询问你是否确定的Y和y,难道真的要强制要求输入的是Y还是y吗,这样未免也太不友好了吧。所以为了用户的体验。

大写便小写,小写变大写

import  random
a=random.randint(1,100)
num=1
while num:
    number=int(input("请输入一个整数:"))
    if number==a:
        print("猜对了,烟花走起")
    elif number>a:
        print("猜大了")
    else:
        print("猜小了")
    num+=1
    if num ==3:
        s=input("请输入需要输入的选项,y表示继续游戏,n表示停止游戏")
        num=1
        if s=="y":
            continue
        else:
            break

结果:
在这里插入图片描述
import random
a=random.randint(1,100)

指 导入random包,random.randint(1,100)指在1~100之间随机生成一个数


好了,问题来了像上面那个想再次游戏必须要输入指定的小写y或者n才可以吗,这样是不是对玩家太不友好了。

加入upper()修改一番

import  random
a=random.randint(1,100)
num=1
while num:
    number=int(input("请输入一个整数:"))
    if number==a:
        print("猜对了,烟花走起")
    elif number>a:
        print("猜大了")
    else:
        print("猜小了")
    num+=1
    if num ==3:
        s=input("请输入需要输入的选项,y表示继续游戏,n表示停止游戏")
        num=1
        if s.upper()=="y":
            continue
        else:
            break

结果:

可以发现,大小写都能使用了。体验感这波给满分,想要体验感更好可以设置为 0 或 其他。当设置的条件是y时,就要使用lower(),而不是upper()了。


3.endswitch() 尾端匹配 startswith()首端匹配

简而言之就是匹配字符串的最后一个字符

3.1、endswitch() 尾端匹配

address=input("请输入你的地址:")
if address.endswith("村"):
    print("农业户口")
else:
    print("非农业户口")

结果:

请输入你的地址:上海市信息公园村
农业户口

我们可以发现输入的字符串是 上海市信息公园村 ,因为最后一个字符串是村,所以匹配为农业户口


3.2、startswith()首端匹配

根据地址判断你是哪里的人口

# TODO     startswith()
adress=input("请输入你的家庭住址:")
if adress.startswith("上海"):
    print("上海人")
elif adress.startswith("北京"):
    print("北京人")
else:
    print("其他人")

结果:

请输入你的家庭住址:上海市浦东新区
上海人

输入地址上海市浦东新区,根据首字符上海判断你是上海人
不管是endswitch()还是startswith()都是对字符串的首尾端进行匹配,可以匹配一个或者多个字符


**

4、strip()

**
4.1 strip()用法

strip()的用法简单点来说就是去除字符串两边的空格、换行符、制表符,得到一个新的字符串

print("好的")

结果:

在这里插入图片描述
可以发现除了打印出来的 好的 还打印出来了一行换空格,产生空格的原因是因为print()函数,那么想要去除怎么办呢,先用strip()试试。

ok="好的"
a=ok.strip()    #strip 只能针对字符串进行操作  print打印的空格无法解决
print(a)

结果:
在这里插入图片描述
我们可以发现空格还在。所以strip() 只能针对字符串进行操作 print打印的空格无法解决。当然也不是没有解决的方法,end就可以解决

ok="好的"
a=ok.strip()    #strip 只能针对字符串进行操作  print打印的空格无法解决
print(a,end="")

结果:
在这里插入图片描述
可以发现问题解决,空格去除了。


ok,下面的就不详细讲解了,不清楚的可以评论区或者私信我,我看见都会解答的。下面的代码主要就是想说明strip()只能去除两边的空格、制表符之类的,不能去除中间的,下面会讲解字符串中间的怎么去除。

ok="好的\nhello\ngoodbye"
ok.strip()
print(ok)


oks="\n好的hellogoodbye\n"
oks.strip()
print(oks)

okss="好的\n\thello\ngoodbye"  #\t制表符  == 四个空格 ==tab键
print(okss.strip())


oksss="\n\t好的hellogoodbye\n"
print(oksss.strip())

结果:
在这里插入图片描述


4.2、lstrip()
lstrip() 删除字符串左侧空白字符

hello="                   tsw"
print(hello.lstrip())

结果:
在这里插入图片描述
结果发现只是把tsw左边的空格全都去掉。输出答案下面还有一行是因为print()输出的原因,想要去掉可以使用end=""
意思上**lstrip() <==>left-strip()**


4.3、rstrip()
rstrip()删除字符串右侧空白字符

hi="www       "
print(hi.rstrip())

结果:
在这里插入图片描述
我们发现就是删除右边的空格,空格是因为print()函数输出原因。
意思上
**rstrip() <==> right-strip()**




**

5.replace()

**
replace("旧字符串",”新字符串“,替换次数) 特殊字符换程正常的,一般使用在爬虫中,将一些稀奇古怪的符号换掉
首先我们引入一首诗,但是诗人的出生时代错了该怎么办?

mydemo="      静夜思"    \
       "     宋  李白    " \
       "床前明月光,疑是地上霜。" \
       "举头望明月,低头思故乡。"
print(mydemo)
top=mydemo.replace("宋","唐")
print(top)

结果:

在这里插入图片描述
是不是,是不是,是不是用replace()将诗人的出生年代宋换成了唐,并非只能换诗的年代,诗中的任何字都能换。


还是以这首诗为例,将诗中的“月”换成“陶”,诗的水平是不是有提高了【坏笑】【坏笑】

mydemo="      静夜思"    \
       "     宋  李白    " \
       "床前明月光,疑是地上霜。" \
       "举头望明月,低头思故乡。"
print(mydemo)
top=mydemo.replace("月","陶")
print(top)

结果:
在这里插入图片描述
g)
根据结果可以发现诗中的 “月” 全部换成了 “陶”


再反问一下,难道只能一下子全换吗,不能只换一个吗?
答案是肯定的,当然能

mydemo="      静夜思"    \
       "     宋  李白    " \
       "床前明月光,疑是地上霜。" \
       "举头望明月,低头思故乡。"
print(mydemo)
top=mydemo.replace("月","陶",1)
print(top)

结果:**在这里插入图片描述
还是上面的例子,我们发现只是添加了一个参数,就得到了不一样的结果。是不是又学到了



出自之外还有更牛的,多个字符串换多个字符串

mydemo="      静夜思"    \
       "     宋  李白    " \
       "床前明月光,疑是地上霜。" \
       "举头望明月,低头思故乡。"
print(mydemo)
top=mydemo.replace("低头思故乡","陶同学666")
print(top)

结果:
在这里插入图片描述


那么垃圾字符又怎么处理呢,诗中的字符串是不是使诗看起来非常糟糕,下面就来看一下怎么处理吧

mydemo="      静夜思"    \
       "     宋  李白    " \
       "床$¥……?“&*……前明月光,疑是地$¥……?“&*……上霜。" \
       "举头望$¥……?“&*……明月,$¥……?“&*……低头思故乡。"
print(mydemo)
top=mydemo.replace("$¥……?“&*……","")
print(top)

结果:
在这里插入图片描述
是不是看起来非常的舒服

是不是和很好玩,很有意思。除此之外,还可以将一个换多个,多个换一个,等等。只要replace()在字符串中能找到匹配的,就能换成任意的、你想要的字符串。 **一般用于爬虫中去除爬取的符号和空格,让数据显的更加整洁**

**

6、split() 分割字符串

**
就我个人来看,strip()、replace()和下面要说的spilt()可以称作为字符串处理三剑客

我们还是用静夜思来讲解split()的用法。

当静夜思从网上爬取下来的,或者应为自己的原因不是以",(逗号)"分割的,看起来很乱怎么办?当然是找split()

mydemo="      静夜思,"    \
       "|宋|李白|" \
       "床前明月光|疑是地上霜|。" \
       "举头望明月|低头思故乡。"
print(mydemo)
top=mydemo.split("|")
print(top)

结果:
在这里插入图片描述
是不是很好的切开了
有人问为什么静夜思前面还有空格呢,能去掉吗?
在这里插入图片描述
看上面的图,你认为能不能去掉呢?【疑问】【疑问】


好了,文章最后,三兄弟该一起上场了,还是以静夜思来进行演示

mydemo="      静夜思,"    \
       "$宋#李白$" \
       "床#前明#月光#疑是地上霜$。" \
       "举头望#明月$低头思故乡。     "
print(mydemo)
top=mydemo.replace("#","").strip().split("$")
print(top)

结果:
在这里插入图片描述
三兄弟,大哥replace()先将文章中的#全部换掉(双引号之间什么也没剩,等价于delete),二哥strip()上场将文中首位端的空格全部去掉(注意只能去除首位的空格,中间的没法去除,如果想去除可以通过大哥replace(" “,”")将空格替换掉,最后小弟split()上场将古诗通过$分割就得到上图的结果了。怎么样,三兄弟是不是很猛







觉得还不错,记得点赞收藏加关注,一键三连 -- ^ --

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。