linux系统中python的字符串

一. python的字符串

1. 字符串类型

字符串类型:
字符串的定义:
•第一种方式:
str1 = 'our company is westos'
•第二种方式:
str2 = "our company is westos"
•第三种方式:
str3 = """our company is westos"""

2.转义符号

一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符。
\n: 代表换行符    \": 代表双引号本身
\t: 代表tab符    \': 代表单引号本身

示例:

1.>>> say = 'hello\n python'  #\n换行
>>> print(say)
hello
 python

2.>>> say = '\"python\", this\'s a best language.' #\"转译双引号
>>> print(say)
"python", this's a best language.

3.>>> say = '\t\"python\", this\'s a best language.'  
#\t表示一个tab符,\'转译单引号
>>> print(say)
    "python", this's a best language.

这里写图片描述

3. 字符串操

字符串属于序列,序列支持的操作如下:
• 索引          切片
• 判断子串       重复
• 连接          计算长度
•成员操作符

索引:

• 索引(s[i] ):获取特定偏移的元素
• 给出一个字符串,可输出任意一个字符,如果索引为负数,就是相当于从后向前数。
索引理解:
字符串 h e  l  l  o   \n
索引  0  1  2  3  4  5
索引 -6 -5 -4 -3 -2 -1

示例:

正向索引:
name = "hellowestos"
print(name[0])      #索引第一个元素
反向索引:
name = "hellowestos"
print(name[-3])     #索引倒数第三个元素

这里写图片描述

切片:

切片S[i:j]提取对应的部分作为一个序列:
•上边界并不包含在内;
•如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;
•扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;
s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法

示例:

name = "hellowestos"
#start:end 从start索引开始到end-1个索引结束;
print(name[0:3])    #表示切取1-3个元素; 
print(name[:3])     #如果start没有, 则默认从0索引开始;
print(s[2:])        #如果end没有, 则默认到最后结束;
print(s[0:4:2])     #从0开始, 到4-1结束, 步长为2
print(s[::2])       #表示从开始到结束,步长为2;
print(name[:])      #表示所有元素,可用作copy;
print(name[::-1])   #表示反转所有元素;
print(s[-3:])       #显示最后三个字符。

这里写图片描述

重复:

print('*'*10+'学生管理系统'+'*'*10)    #*10表示重复10次

这里写图片描述

连接:用+号连接

name = 'Go'                   #设定变量
print('hello '+'westos')      #用+号连接hello和westos
print('hello %s' %(name))     #用+号连接hello和name变量
print('hello '+name)          #用+号连接hello和name变量 

这里写图片描述

成员操作符:判断子串

s="hello"              #设定变量
print('h' in s)        #h在s变量中吗=======True
print('hol' in s)      #hol在s变量中吗=====False
print('hol' not in s)  #hol不在s变量中吗===True

这里写图片描述

计算长度:

name = 'hellowestos'
print(len(name))      #len()表示计算字符串长度     

这里写图片描述

示例:

for循环:
for i in range(10):      #循环10次,默认从0开始到10-1结束
    print(i,end=' ')

这里写图片描述

示例:

s = 'hello'              #设定变量
for i in s:              #循环,依次遍览s变量的每个元素
    print(i,end='+')

这里写图片描述

回文数练习 :

题目要求:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例:
示例 1:
        输入: 121
        输出: true
示例 2:
        输入: -121
        输出: false
        解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数
 方法一:
num = input('please input a num: ')
if num == num[::-1]:     #如果num值等于他的反转值,则执行
    print('ture')
else:
    print('false')
方法二:prinr()默认返回的是bool类型:true或fals
print('true' if num == num[::-1] else "false")       

这里写图片描述

4. 字符串的类型转换

str(obj)     #将其他类型内容转换为字符串
int(obj)     #将字符串转换为为整数
float(obj)   #将字符串转换为浮点型
long(obj)    #将字符串转换为长整型

5. 字符串常用操作

str.capitalize():
将字符串首字母大写,并返回新的首字母大写后的字符串;

str.center(width[,fillchar])
- 返回一个长为width的新字符串,在新字符串中原字符居中,其他
- 部分用fillchar指定的符号填充,未指定时通过空格填充;

str.count(sub[, start[, end]]) -> int
- 返回sub在str中出现的次数,如果start与end指定,则返回指定
则返回指定范围内的sub出现次数;


str.isalnum()    //判断是否都是字母或数字
str.isalpha()    //判断是否都是字母
str.isdigit()    //判断是否都是数字
str.islower()    //判断是否都是小写
str.isspace()    //判断是否都是英文空格
str.istitle()    //判断是不是都是标题(有大小写)
str.isupper()    //判断是不是都为大写字母

示例:

判断一个字符串是否为标题:
是否为标题条件: 第一个字母大写, 其他字母小写;
name = input('输入字符:')     #定义变量
方法一:
if  str.isupper(name[0]) and str.islower(name[1:]):
     print('是标题')
else:
     print('不是标题')
方法二:
print('是标题' if str.isupper(name[0]) and str.islower(name[1:]) else '不是标题' )

这里写图片描述

示例:判断变量名合法性

1. 变量名可以由字母,数字或者下划线;
2.变量名只能以字母或者下划线开头;s[0]
3.变量名不能是python的关键字: eg: if, elif, else,
  eg: while, for, break,continue,pass
要求:当用户输入一个变量名, 判断该变量名是否合法?  
var = input('输入变量名: ')
# 1. 判断变量名的第一个字符是否合法?  --- 是否是字母或者下划线
if var[0].isalpha() or var[0] == '_': 
# 2. 除了第一个字符之外的其他字符; var[1:]  
    for item in var[1:]:
        if not(item.isalnum() or item == '_'):
            print('Error:%变量名不合法' %(var))
            break
    else:
        print('%s变量合法' %(var))
else:
    print('Error:第一个字符不合法!')

这里写图片描述

示例:while与else组合

whileelse的组合:
输入用户名和密码登陆,如果错误三次将超出三次登陆机会。
trycount = 0           #刚开始尝试登陆次数等于0
while trycount < 3:    #判断尝试次数小于3次是执行
    name = input("username: ")
    passwd = input("password: ")
    trycount += 1      #输入一次用户名和密码,尝试次数将加一
    if name == 'root' and passwd == 'westos':  
    #判断用户名和密码是否正确
        print('登陆成功!')    #正确则登陆成功
        break               #推出循环
    else:                   #否则将错误
        print('username or passwd error!!')
else:                       #超过三次将超过登陆机会
    print('登陆超过三次机会')

这里写图片描述

示例:for与else组合

forelse的组合:
for i in range(3):     #循环三次,尝试的次数
    name = input('uasername:')
    passwd = input('password:')
    if name == 'root' and passwd == 'westos':
    #判断用户名和密码是否正确
        print('登陆成功!')   #正确则登陆成功
        break               #推出循环
    else:                   #否则将错误
        print('username or passwd error!!')
else:                      #超过三次将超过登陆机会
    print('登陆超过三次机会!!')

6. 字符串的搜索与替换

find 字符串的搜索:
s = 'hello python, ok, python  is a program language.python'
print(s.find('python'))   #找到子串,并返回最小的索引值; 
print(s.rfind('python'))  #找到子串,并返回最大的索引值;
print(len(s))             #字符串长度

执行结果:
这里写图片描述

字符串的替换:
s = 'hello python, ok, python  is a program language.python'
print(s.replace('hello','westos')) #将所以有hello替换为westos
print(s.replace('python','GO'))    #将所有的python替换为GO

执行结果:
这里写图片描述

7.字符串的处理:删除不必要的字符串

删除字符串中的空格:
strip: 删除字符串左边和右边的空格。(空格是广义的:\n,\t,和空格都是空格)
s = '\t\t\t     hello   \n\n\t'
print(s.strip())
lstrip: 删除字符串左边的空格。
s = '\t\t\t     hello   \n\n\t'
print(s.lstrip())
rstrip: 删除字符串右边的空格。
删除中间的空格, 通过replace间接实现删除中间的空格。
sa = "hwllo westos linux"
print(sa.replace(" ", ""))
删除字符串中所有的‘a’字符
n = 'hello apple, a phone'
print(n.replace('a',''))

执行结果:
这里写图片描述

示例:

会自动去掉输入是不小心加入的空格:
name = input("用户名:").strip()
passwd = input("密码:").strip()
if name == "root" and passwd == 'westos':
    print("登陆成功!")

这里写图片描述

8. 字符串对齐

print('*'*10+'学生管理系统'+'*'*10)
#学生管理系统在中间左右各有10个*

s = '学生管理系统'
#字符串长度为30,学生管理系统在中间,其他用空格补齐
print(s.center(30))  
#字符串长度30,学生管理系统在中间,其他用*补
print(s.center(30,'*'))  
#字符串长度30,学生管理系统在左边,其他用*补
print(s.ljust(30,'*')) 
#字符串长度30,学生管理系统在左边,其他用*补
print(s.rjust(30,'*'))

执行结果:
这里写图片描述

9.字符串统计

s  = 'hello'
print(s.count('l'))    #查找l出现的次数
print(s.count('llo'))  #查找llo出现次数

h = 'hello python, ok, python  is a program language.python'
print(h.count('python'))   #查找python出现的次数

执行结果:
这里写图片描述

示例:

给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符:
'A' : Absent,缺勤
'L' : Late,迟到
'P' : Present,到场
如果一个学生的出勤纪录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),
那么这个学生会被奖赏。
你需要根据这个学生的出勤纪录判断他是否会被奖赏。
示例 1:

输入: "PPALLP"
输出: True
示例 2:

输入: "PPALLL"
输出: False
info= input("输入出勤记录:")
print(info.count('A') <=1 and info.count('LLL') == 0)

执行结果:
这里写图片描述

10.字符串以什么开头和以什么结尾

字符串以什么开头:
url1 = 'http://www.baidu.com'
url2 = 'https://www.baidu.com'
url3 = 'ftp://www.baidu.com'
url4 = 'file://www.baidu.com'
print(url1.startswith('http://'))  #USL1是否是以http://开头
print(url1.startswith('https://')) #USL1是否是以https://开头

字符串以什么结尾:
filename1 = 'hello.py'
filename2 = 'hello.sh'
filename3 = 'hello.jpg'
print(filename1.endswith('py'))  #filename1是否以py结尾
print(filename1.endswith('sh'))  #filename1是否以sh结尾

执行结果:
这里写图片描述

示例:

找出/var/log/目录中所有以.log结尾的文件名
import os     #引用os模块
for filename in os.listdir('/var/log'):
    if filename.endswith('.log'):
        print(filename)
#    else:
#       print('%s不是以.log结尾的' %(filename))

执行结果:
这里写图片描述

11. 字符串的连接与分离

字符串的连接与分离:
判断一个IP是否合法?
IP = input('ip:')
IP_s = IP.split(".")   #将IP以点进行分离
if len(IP_s) == 4:          #判断IP是否为4段
    for item in IP_s:
        item = int(item)
        if not 0 < item < 250:
            print('%s不合法' %(IP))
            break
    else:
        print('%s合法' %(IP))
else:
    print('%s不合法,IP不为4段' %(IP))

执行结果:
这里写图片描述

字符串的连接与分离:字符串的计算与反转
info = '23+12+90*8'
# 计算info的结果;
print(eval(info))
字符串的反转:
s = 'this is pyhton'
print(s.split())      #将s反转
将字符串反转用+号连接起来:
s = 'this is pyhton'
new_s = s.split()
print("+".join(new_s))
字符串join的用法:
names = ['westos','hello','linux','redhat','apple']
print("Hello " + ",".join(names[:-1]) + " and " + names[-1])

这里写图片描述

12.排序:

排序:sort
查看最大,最小值是按ASCII码值排序的:
s = 'hello'
print(max(s))          #最大值
print(min(s))          #最小
print(sorted(s))       #排序,按ASCII码值从小到大排序
ord查看ASCII码值:
s = 'hello'
for i in s:
    print(ord(i))  # ord查看ASCII码值

这里写图片描述

# python3中, 不支持数值类型比较大小;
x = 10
y = 12
if x > y:
    print(1)
elif x < y:
    print(-1)
else:
    print(0)

13.枚举:

s = 'hello'
for i in enumerate(s):
    print(i)
 for index,value in enumerate('hello'):
     print('%s->%s' %(index, value))

这里写图片描述

zip,:将第一个字符串和第二个字符串的值一一对应
s1 = 'hello'
s2 = '12345'
for i in zip(s1,s2):
    print(i)

这里写图片描述

示例:求最大公约数和最小公倍数

求最大公约数和最小公倍数:
num1 = int(input("NUM1:"))
num2 = int(input("NUM2:"))
min_num = min(num1,num2)
for item in range(min_num,0,-1):
    if num1 % item == 0 and num2 % item == 0:
        res = item
        break
print("%s%s的最大公约数为%s" %(num1, num2, res))
print("%s%s的最小公倍数为%d" %(num1, num2, (num1*num2)/res))
#最小公倍数=(num1*num2)/最大公约数)

这里写图片描述

示例: 统计字符串个数

s = input("输入统计的字符串:")
letter_count = space_count = num_count = other_count = 0
for item in s:
    if item.isalpha():
        letter_count += 1
    elif item.isspace():
        space_count += 1
    elif item.isdigit():
        num_count += 1
    else:
        other_count += 1

print("""

        %s的统计

    英文字母个数:%d
    空格个数:%d
    数字个数:%d
    其他个数: %d
""" %(s, letter_count, space_count, num_count, other_count))

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值