python初体验-字符串方法

一、字符串的索引位置

和对待列表一样,我们也可以用索引位置来访问字符串中的字符。

user_info = ["小明", "23", "#斗地主", "@xiaoming1993", "阿强", "31", "#aas", "@aq_2019", "@username", "#第一中学"]
user_email = []
for info in user_info:
    if info[0] == "@":  # 如果元素开头为@
        user_email.append(info)  
print(user_email)
# 输出:['@xiaoming1993', '@aq_2019', '@username']

例子中,我们通过 info[0] 取临时变量 info 中的第一个字符。

二、截取字符串
字符串的索引位置也是从0开始计算。
words = "风吹草低见牛羊"
print(words[0:3])    # 输出:风吹草
words[0:3] 截取 words 前三个字符——"风吹草"

三、字符串的联结
将两个字符串用 + 联结起来,组成一个新的字符串。
string_1 = "吃葡萄不吐葡萄皮"
string_2 = "不吃葡萄倒吐葡萄皮"
print(string_1 + string_2)
# 输出:吃葡萄不吐葡萄皮不吃葡萄倒吐葡萄皮

四、字符串的长度
可以用 len() 得到字符串的长度。
sentence = "临渊羡鱼不如退而结网"
print(len(sentence))
# 输出:10
print(sentence[len(sentence)-1])
# 输出:网


五、字符串倒取
不仅可以从左往右截取字符串,也可以从右往左截取字符串,同列表一样,从右往左的起始索引位置为 -1
animal = "elephant"
print(animal[-3:])
# 输出:ant

上例中,输出变量 animal 的后三位字符:"ant"


六、字符串的不可变性
字符串具有不可变性,这意味着一旦创建了某个字符串,我们不可以改变它,我们只可以在它的基础上创建新的字符串。
name = "张小明"
name[0] = "王"
TypeError: 'str' object does not support item assignment
#返回类型错误:不可以改变字符串中的元素

上例中,我们想改变 name 第一个元素的值,结果程序返回错误。我们可以换种方法,得到想到的结果:
name = "张小明"
new_name = "王" + name[1:]
print(new_name)
#输出:王小明


七、转义字符
某些字符在 Python 中有特定含义,比如"" 用来包裹字符串。当我们想告诉计算机,此处的字符不取特定含义时,我们可以在之前标记 :
my_words = "I said, "I know what I said."" 
print(my_words)
# SyntaxError: invalid syntax 出现错误

避免计算机在运行程序时,将它们错误看作是用来包裹字符串的引号,导致运行错误。
my_words = "I said, "I know what I said."" 
print(my_words)
# 输出:I said, "I know what I said."
另外,值得一提的是, 符号还可以用来为代码换行。(在代码特别长时,很管用!)
text = "一二三四五
六七八九十"
print(text)
#输出:一二三四五六七八九十


八、字符串遍历
可以循环字符串。比如用for循环
chars = "一闪一闪亮晶晶"
for char in chars:
  print(char)
#输出:
一
闪
一
闪
亮
晶
晶

也可以用while循环
chars = "满天都是小星星"
n = 0
while n < len(chars):
  print(chars[n])
  n += 1
# 输出:
满
天
都
是
小
星
星


九、字符串与判断条件
(1)在循环字符串时遍历,我们可以对每一个字符元素做条件判断。
for char in "I have an apple.":
  if char == "a":
    print("这里有字母a")
# 输出:
这里有字母a
这里有字母a
这里有字母a 

(2)用关键字 in 判断某元素(字符)是否在列表(字符串)中。
print("我" in "我是谁?") # 输出:True
print("P" in "Python") # 输出:True
print("p" in "Python") # 输出:False 区分字母大小写

十、.split()
(1)可以用 .split() 切割字符串。.split() 的括号中可以填入分隔符,程序以分隔符为截点来切割字符串:
text = "一棵是枣树,另一棵还是枣树"
print(text.split(",")) # 分隔符为 ,
# 输出:['一棵是枣树', '另一棵还是枣树']

示例中,.split() 中的分隔符为中文逗号 ",",变量 text","被切割为两部分:"一棵是枣树""另一棵还是枣树"。另外,分隔符也可以是文字;最后,如果不填写分隔符,.split() 会默认用空格作为分隔符。

(2).split() 切割一个字符串之后,会生成一个列表。我们可以和处理列表一样,取其中的各个部分:
email_adr = "learnpython@shanbay.com"
print(email_adr.split("@")[1])
# 输出:shanbay.com

并且,我们可以对切割完的字符串再做切割:
email_adr = "learnpython@shanbay.com"
web_adr = email_adr.split("@")[1]
print(web_adr.split(".")[0])
# 输出:shanbay

例子中,我们对 "shanbay.com" 又做了一次切割,分隔符为 "."

最后,需要注意的是:如果切割符是字符串的最后一个字符,则在生成的列表中,会有一个空字符串在末尾。

text = "你好。再见。"
print(text.split("。"))
# 输出:['你好', '再见', '']  列表最后一个元素为空字符串


十一、.strip()
我们在真实工作中遇到的数据往往是“不干净”的。比如,在字符串中有大量的空格。这时,我们可以用 .strip() 方法删去字符串开头和结尾的空格:
text = "   我说的你能听见吗?        "
print(text.strip())
# 输出:我说的你能听见吗?

.split() 一样,我们可以在 .strip() 的括号中填入参数。如果目标字符串的开头和结尾是该参数,.strip() 将会把参数删去。此时,剩下的字符串开头和结尾若有空格,空格将会被保留:
text = "!!!!   我说的你能听见吗?!!!!"
print(text.strip("!"))
# 输出:   我说的你能听见吗?
# “我”前方的空格会被保留

十二、.join()
既可以用 .split() 切割字符串,也可以用 .join() 将若干字符串联结起来。具体如下:
text = ["苹果","香蕉","哈密瓜","芒果"]
print("、".join(text))
# 输出:苹果、香蕉、哈密瓜、芒果

例子中,.join() 前双引号内的"、" 是我们联结字符串的分隔符.join() 括号内是目标字符串所在的列表。

当然,即使不用分隔符,我们也可以联结字符串:

text = ["苹果","香蕉","哈密瓜","芒果"]
print("".join(text))
# 输出:苹果香蕉哈密瓜芒果


十三、换行符号
我们之前在学习转义字符 时,知道它可以起到为代码换行的作用。今天我们学习一个类似的符号 ,它被用来为字符串换行:
print("a
b")
# 输出:
a
b

结合刚才学到的 .join(),我们可以用 作为 .join() 的分隔符,在所联结的字符串之内进行换行:
poem = ["红豆生南国","春来发几枝","愿君多采撷","此物最相思"]
print("
".join(poem))
# 输出:
红豆生南国
春来发几枝
愿君多采撷
此物最相思


十四、.replace()
可以用 .replace() 将字符串中的某一部分替换。
text = "我爱苹果"
new_text = text.replace("苹果","哈密瓜")
print(new_text)
# 输出:我爱哈密瓜


十五、.find()
b.find(a) 可以返回字符串 a 在字符串 b 中第一次出现所在的索引位置:
find_pu = "吃葡萄不吐葡萄皮".find("葡")
print(find_pu) 
# 输出:1
# "葡" 在 "吃葡萄不吐葡萄皮" 中第一次出现的索引位置为1

如果b.find(a)a长度大于1,.find() 会返回字符串a的第一个字符在b中的索引位置:
find_putao = "吃葡萄不吐葡萄皮".find("葡萄")
print(find_putao) 
# 输出:1

需要说明的是,如果我们想找的字符串 a 并没有出现在字符串 b 中,.find() 返回 -1

十六、字母大小写
Python 中有一些内置的方法可以帮助我们处理字符串数据。我们先学习:.upper().lower().upper() 将字符串中的所有英文字母变成大写;.lower() 将字符串中的所有英文字母变成小写。
text = "Harry Potter"
print(text.upper())
print(text.lower())
# 输出:HARRY POTTER
# 输出:harry potter


十七、.format()
(1).format() 可以将字符串中的部分字符变成变量,这是一种非常便捷的操纵字符串的方法。我们来做比较,先看下方示例:
number = 3
print("我有" + str(number) +"个苹果。")
# 输出:我有3个苹果。

示例中,我们用 + 来联结变量 number 和前后两个字符串。同时,我们还需要用 str()number 转变为字符串类型,现在我们可以:
number = 3
print("我有{}个苹果。".format(number))
# 输出:我有3个苹果。

第二个示例中,{} 中的部分可以由 .format() 括号中的变量值所替代。我们再看一个例子:
singer = "陈奕迅"
song = "《浮夸》"
print("我最喜欢的歌是{}的{}".format(singer,song))
# 输出:我最喜欢的歌是陈奕迅的《浮夸》

发现当有多个 {} 时,可以按照 .format() 括号中变量的顺序依次赋值。这一点很像之前学到的用位置参数为函数赋值。

(2).format()为了提高代码的可读性,建议在 .format() 中加入关键字参数,指明对应的变量与赋值。和对待函数参数一样。使用关键字参数,可以不考虑变量的顺序。
print("我最喜欢的球星是{country}的{star}".format(star = "C罗",country = "葡萄牙"))
输出:我最喜欢的球星是葡萄牙的C罗

def book(name,year,writer,publisher):
    return "{name}的作者是{writer},该书由{publisher}在{year}年出版。"
    .format(name = name,year = year, writer = writer, publisher = publisher)
print(book("《三体》","2008","刘慈欣","重庆出版社"))
# 输出:《三体》的作者是刘慈欣,该书由重庆出版社在2008年出版。











 
 
原文地址:https://www.cnblogs.com/free-1124/p/11333277.html