python中-字符串的应用-数学平方根-正则表达式

Python字符串与数学操作技巧
本文深入探讨了Python中字符串处理和数学运算的各种高级技巧,包括字符串拼接、平方根和立方根计算、进制转换、科学计数法表示、字符串格式化及常见函数的使用。同时介绍了如何利用Python内置库进行复杂操作。

目录

数字 与 字符串

字符串拼接

直接拼接

name = 'a'
sex = 'nan'
name+sex
'anan'

导入一个模块应用模块进行拼接

import operator
operator.concat(name,sex)
'anan'

平方根

应用模块求出平方根的方法 先导入math模块

import math

应用这个模块中的sqrt函数 传入9

math.sqrt(9)
返回结果为3  通过这个结果得出这个函数是求出某个数的平方根
3.0

用运算符求出平方根

xy 一个代表 代表 x乘以y
x**y 当两个* 时 代表 x的y次幂(x的y次方)而当y时小数时 就是对 x的值进行开方

4**0.5
2.0

​2.0

立方跟

8**(1/3)
2.0

π(数学中的pai)

用搜狗输入法pi 可拼出 π

应用math模块

math.pi
3.141592653589793

字符串

打出 反斜杠 \ .使用 反斜杠 转义

print('\\')
\

\n 换行

print('a\nb')
a
b

进制转换

十进制 转 8进制

print('%o'%(8))
10
十进制 转 8进制
print('%o'%(12))
14
十进制 转 16进制
print('%x'%(10))
print('%x'%(15))
print('%x'%(16))
a
f
10

数学函数

bin(x) 将x转为2进制
oct(x) 将x转为8进制
hex(x) 将x转为16进制
返回的结果,前两位表示几进制 ,后面是结果

怎么转回十进制

int('100', 2)
int('10' 8)
int('22' 16)
print(bin(4))
print(oct(12))
print(hex(16))
0b100
0o14
0x10
a = 101010
print(int(str(a) , 2))
42
print(int('0b101010' , 2))
42

科学计数法 %e

print('%e'%5)
5.000000e+00
print('%e'%500)
5.000000e+02
print('%e'%-500)
-5.000000e+02
print('%e'%0.000005)
5.000000e-06
print(1e1-5)
15.0
print(1e+4-500)
9500.0

常用函数

1. 返回字符串的首字母大写
'hello'.capitalize()
'Hello'
2. center(width,‘符号’) 返回 str , 占据 width 宽度
print('jack'.center(30,'-'))
print('jack'.center(30,'-'))
print('you jump,I jump'.center(30,'-'))
-------------jack-------------
-------------jack-------------
-------you jump,I jump--------
左对齐 str.ljust()
右对齐 str.rlist()
3.string.count(str,start=0,end=len(string))
str3 = '哄妈咪妈咪哄哄妈咪妈咪哄哄妈咪妈咪哄'
str3.count('哄')\
6
str3.count('哄',1,-2)   #从下标为1的地方开始 到-2结束
4
4.string.startswith(str , start ,end)
检查 string(start:end) 是否 以 str 开头
如检查姓什么
import pandas as pd
from pandas import Series
s2  = pd.Series(['张三','李四','王五'])
s2
s2.apply(lambda x: x.startswith('张'))
0    False
1     True
2     True
dtype: bool
s2[s2.apply(lambda x: x.startswith('张'))]
0    张三
dtype: object
或者 使用
s2.apply(lambda x:x[0]=='张')
0    False
1     True
2     True
dtype: bool
s2.str.startswith('张')
0     True
1    False
2    False
dtype: bool
s3 = pd.Series([' 张三',' %李四','王五#'])
s3
0      张三
1     %李四
2     王五#
dtype: object
s3.str.strip().str.strip('%''#')
0    张三
1    李四
2    王五
dtype: object
5. string.endswith(str,start,end) 检查某个区间内是否已str 结尾
6. string.find(str,start,end) 查找 string 的 start-end 范围内 str 在整体的索引位
找不到返回-1
str6 = '大吉大利,今晚吃鸡'
str6.find('大',str6.find('大')+1)
str6.find('大',1)
2
str6.find('明晚')
-1
假设一个长字符
mimi = 'ljfldasjfe@1388888888@kejlasd'

x= mimi.find('@')
y= mimi.find('@',x+1)
y
22
mimi[x+1:y]
'1388888888'
6. string.rfind(str,start,end) 从右往左查找 string 的 start-end 范围内 str 在整体的索引位
str7 = 'a1234a'
str7.rfind('a')
5
str7.rfind('b')
-1
8. string.index(str,start,end) 同 find 但是找不到会报错
str7.index('a')
0
str7.index(‘b’)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-98-d8193af088b0> in <module>
----> 1 str7.index('b')

ValueError: substring not found
9.判断 string.isalnum 判断 string 是否有 纯数字字母(包含汉字)组成
'`abc123'.isalnum()`
True
'阿是欧到那时空间的123'.isalnum()
True
'asf-123'.isalnum()
False
10. string.join(seq) seq :可以是list 。 以string为连接符,吧seq中的元素连接起来得到str
str10 = '天地玄航'
'*'.join(str10)
'天地玄航'
'-'.join(('2020','8','17'))
'2020-8-17'
max()
max('avxbnAVXBN')
'x'
min('asdzxcAVDVG')
'A'
11.string.replace(old,new,n) 将string 中的old 替换成 new ,n次默认所有
'abc-abc-abc'.replace('a','A')
'Abc-Abc-Abc'
'abc-abc-abc'.replace('a','HAHA',1)
'HAHAbc-abc-abc'
12.string.split(str=’’ , num=string.count(str)) 将string以str的分隔 返回list
默认分隔num次 。 也就是默认分隔所有
str12 = '张三-|-李四-|-王五-|-赵六'
str12.split('-|-')
['张三', '李四', '王五', '赵六']
str12.split('-|-',1)
['张三', '李四-|-王五-|-赵六']
13. ‘abc123’.translate(table) 根据table对象去翻译 每个字符
准备 table 对象
intable = 'abcl'
outtable = 'ABCy'
table=str.maketrans(intable,outtable)
'abcd-abc1-123'.translate(table)
'ABCd-ABC1-123'
可以使用多次replace
'abcd-abc1-123'.replace('a','A').replace('b','B').replace('c','C').replace('1','y')
'ABCd-ABCy-y23'
正则
import re
假设 有个数据 需要将字母以符号分割成list
str1 = 'a,b.c!d;;;;ffe/gg,%h'

准备转换的table

intable = ',.!;/%'
outtable = ',,,,,,'
table2=str.maketrans(intable,outtable)

进行替换

str1.translate(table2)
'a,b,c,d,,,,ffe,gg,,h'

分割

str1.translate(table2).split(',')
['a', 'b', 'c', 'd', '', '', '', 'ffe', 'gg', '', 'h']
判断是否 为空
[each for each in str1.translate(table2).split(',') if bool(each)]
['a', 'b', 'c', 'd', 'ffe', 'gg', 'h']
使用正则处理
str1
'a,b.c!d;;;;ffe/gg,%h'
构建正则表达式
reg = re.compile('[a-zA-Z]+')
re.findall(reg,str1)
['a', 'b', 'c', 'd', 'ffe', 'gg', 'h']

正则含义

‘abc’连续的三个字符abc
[abc123] abc123中的一个
[a-z] a-z中的一个
[A-Y] A-Y中的一个
[0-9] 0-9中的一个
[a-zA-Z0-9] a-zA-Z0-9 一个
元字符  
. 就是一个点  
. 任意一个字符  
\w 任意一个 字母数字下划线,在python汇还有一个中文  
\W 不是任意一个 字母数字下划线,在python汇还有一个中文  
\s 一个空白  
\S 非空白  
\d 一个数字  
\D 不是一个数字  

量词
{1,4} 出现1-4次
{1,} 出现一次以上

一次以上
{0,} 任意次
任意次
{0,1} 0或1次 ,又或者无
? 0或1次 ,又或者无
(abc|\d{5}|\w) 竖线隔开的 三个东西中的一个
str1
'a,b.c!d;;;;ffe/gg,%h'
reg2 = re.compile('\W+')
re.split(reg2,str1)
['a', 'b', 'c', 'd', 'ffe', 'gg', 'h']

str1
'a,b.c!d;;;;ffe/gg,%h'
re.sub(reg2,',',str1)
['a', 'b', 'c', 'd', 'ffe', 'gg', 'h']

希望发布的内容对您有帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值