03-Python数字与字符串的方法

数字

- int 

将字符串转换为数字

a = "123"
print(type(a),a)

b = int(a)
print(type(b),b)

 

int默认将字符传内部的数字当作10进制,如不是10进制需要base参数定义,如:

num = "f"
v = int(num, base=16)
print(v)

# 结果 15

 

- .bit_lenght()
当前数字的二进制,至少用n位表示。

age = '10001'
a = int(age,base=2)
print(a,a.bit_length())

# 结果 17 5

 

 

 

字符串

- str

将内容转换成字符串

age = 17
print(type(str(age)))

# 结果 <class 'str'>

 

- .capitalize() 将首字母大写。

- .upper()  将首字母大写。

- .casefold()   所有变小写,可转换的更多。

- .lower()     所有变小写。

- .center() 左右填充。

# 第一个参数左右填充一共多少字符。 第二个参数是空白位置填充,默认为空格。
print(name.center(20,'-'))

- .count()  统计某字符串出现的次数,可以指定起始位置和结束位置(索引值)

- .endswith() 查找是否以某字符串结尾,返回(True/False)

- .startwith() 查找是否以某字符串开头,返回(True/False)

- .expandtabs()

此方法把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8。

从头开始数,数到第一个\t正好为8个空格,不足则补空格,如果还有\t,接着从第一个\t数到第二个\t仍然为8个空格,以此类推直到最后一个\t结束。

举例:

#!/usr/bin/env python
#-*- encoding:utf-8 -*-
S = "username\temail\tpassword\nlaiying\tying@q.com\t123\nlaiying\tying@q.com\t123\nlaiying\tying@q.com\t123"
v = S.expandtabs(20)
print(v)

'''
    结果
username            email               password
laiying             ying@q.com          123
laiying             ying@q.com          123
laiying             ying@q.com          123
'''

注:如果字符串长度超出定义长度,则排版可能会出现问题。

 

- .find() 查找字符串所在的索引位置,只找第一个位置,可以指定起止位置,如查找不到值为 -1 。

- .format()  格式化,将字符串中的占位符替换为指定的值。

- .format_map()  格式化,将字符串中的占位符替换为指定的值。

name = 'i am {name}, {accept}'
print(name.format(name='roy',accept='haha!'))

name = 'i am {0}, {1}'
print(name.format('roy','haha!'))

name = 'i am {name}, {accept}'
print(name.format_map({'name':'roy','accept':'haha!'}))


# 结果 i am roy, haha!

 

- .index() 查找字符串所在的索引位置,如果找不到会报错。 可以被.find()代替。

- .isalnum() 判断字符串内只包含数字或字母或汉子。返回(True / False)。

- .isalpha()  判断字符串内只包含字母或汉子。返回(True / False)。

 

- .isdigit()   如果字符串只包含数字则返回 True 否则返回 False (可以判断一些特殊形式的数字)。

- .isdecimal()  检查字符串内是否只包含十进制字符。这种方法只存在于unicode对象。

- .isnumeric()  如果字符串中只包含数字字符,则返回 True,否则返回 False。

isdigit()
    True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
    False: 汉字数字
    Error: 无
isdecimal()
    True: Unicode数字,,全角数字(双字节)
    False: 罗马数字,汉字数字
    Error: byte数字(单字节)
isnumeric()
    True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
    False: 无
    Error: byte数字(单字节)

 

- .isprintable()   是否存在不可显示的字符 \t \n。

- .isspace() 是否全是空格

- .isdentifier()  判断字符串是否是有效的 Python 标识符,可用来判断变量名是否合法。

 

- .istitle() 是否为标题。检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。

- .title() 转换为标题。

- .islower()  判断是否全是小写字母。

- .lower() 全部转换小写。

- .isupper() 判断是否全是大写字母。

- .upper() 全部转换大写。

 

- .join() 拼接。将字符串中的每一个元素按照指定分隔符进行拼接

print('-'.join('ROY'))

# 结果 R-O-Y

 

- .ljust()    左填充字符

- .rjust()  右填充字符

num = "13688880000"
print(num.ljust(15,"*"))
print(num.rjust(15,"*"))
print(num[:3].ljust(7,"*")+num[-4:])

''' 结果
13688880000****
****13688880000
136****0000
'''

 

- .zfile() 填充0,适用二进制填充~

num = '1001'
print(num.zfill(8))

# 结果 00001001

 

- .strip() 用于移除字符串头尾指定的字符(默认为空格、换行、制表符)或字符序列。 指定字符序列是以“最长公共子序列”规则匹配。

- .lstrip()  左移除

- .rstrip()  右移除

 

- .maketrans()  对应关系替换,用于简单加密?

- .translate() 与maketrans方法配合使用

num = '1001'
encrypt = str.maketrans('1234567890','abcdefgijk')
print(num.translate(encrypt))

# 结果 akka

 

- .partition() 用来根据指定的分隔符将字符串进行分割。如果字符串包含指定的分隔符,则返回一个3元的“元组”,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。

- .rparttion() 右向左分割

domain = "www.baidu.com"
print(domain.partition("."))

# 结果 ('www', '.', 'baidu.com')

 

- .split() 通过指定分隔符对字符串进行切分为“列表”,不保留分割符。如果参数 num 有指定值,代表分割几次。 

- .rsplit()  从右向左

- .splitlines() 包含分隔符的分割方法

str1 = "Line1\n\tLine2 \nLine3 Line4"
print(str1.split())
print(str1.split(' ', 1))

print(str1.splitlines())
''' 结果 ['Line1', 'Line2', 'Line3', 'Line4'] ['Line1\n\tLine2', '\nLine3 Line4']
['Line1', '\tLine2 ', 'Line3 Line4']
'''

 

- .swapcase() 大小写互换

- .replace()    修改字符串的值(并不是真正意义的修改,而是在内存中重新生成了一份新的)

 

转载于:https://www.cnblogs.com/imroy/p/10371193.html