1.编码和解码
>>> s="abc"
>>> type(s)
<class 'str'>
>>> s=b"abc"
>>> type(s)
<class 'bytes'>
>>> s=b"中"
File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.
>>> s="中"
>>> type(s)
<class 'str'>
>>> s1=s.encode("gbk")
>>> s1
b'\xd6\xd0'
>>> type(s1)
<class 'bytes'>
>>> s1.decode("gbk")
'中'
2.修改字符串(字符串不能修改,只能改成list后修改)
>>> a
'hello'
>>> list(a)
['h', 'e', 'l', 'l', 'o']
>>> a
'hello'
>>> s=list(a)
>>> del s[1:4]
>>> "".join(s)
'ho'
3.常用的字符串方法:
*split:分割字符串
>>> "a b c d".split()
['a', 'b', 'c', 'd']
>>> "a\nb\tc\rd e".split()
['a', 'b', 'c', 'd', 'e']
>>> "a||b||c||def".split("||")
['a', 'b', 'c', 'def']
*splitlines:按行分割
>>> "a\nb\tc\rd e".splitlines()
['a', 'b\tc', 'd e']
>>> "a\nb\tc\rd e".split()
['a', 'b', 'c', 'd', 'e']
>>> "a\n\rb\tc\r\nd e".splitlines()
['a', '', 'b\tc', 'd e']
>>> import os
>>> os.linesep
'\r\n'
>>> "a\rb\rc".splitlines()
['a', 'b', 'c']
>>> "a\rb\rc".splitlines(13) #如果想保留\r
['a\r', 'b\r', 'c']
*join:拼接
>>> "".join(["1","2","hello"])
'12hello'
>>> "**".join(["1","2","hello"])
'1**2**hello'
*count :统计
>>> a
'1**2**hello'
>>> a.count("*")
4
>>> a.count("**")
2
*strip:移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。中间不会清掉。
>>> " a bc \r \t \n ".strip()
'a bc'
>>> "aabbccdd".lstrip("a")
'bbccdd'
>>> "aabbccdd".rstrip("d")
'aabbcc'
>>> "aabbccddaa".strip("a")
'bbccdd'
>>> "abcabbccddaabc".strip("abc")
'dd'
>>> "abcabbccdaabbccdaabc".strip("abc")
'daabbccd'
*lower、upper、title
>>> a="i am a girl".upper()
>>> a
'I AM A GIRL'
>>> a.lower()
'i am a girl'
>>> a=a.lower()
>>> a
'i am a girl'
>>> a.title()
'I Am A Girl'
*find和index
>>> "abcdefg".find("cd") #找到cd的坐标
2
>>> "abcdefg".find("cdf") #找不到返回-1
-1
>>> "abcdefg".index("cd")
2
>>> "abcdefg".index("cdf") #找不到抛出异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
#解决,加个try
>>> try:
... "abcdefg".index("cdf")
... except:
... print("cdf is not found")
...
cdf is not found
*center:居中显示,一般用于格式化字符串输出
*ljust:居左显示
*rjust:居右显示
>>> "abc".center(10)
' abc '
>>> "abc".center(10,"*")
'***abc****'
>>> "abc".ljust(10,"*")
'abc*******'
>>> "abc".rjust(10,"*")
'*******abc'
*replace:替换
>>> "abcd".replace("ab","hello")
'hellocd'
*capitalize:首字母大写
>>> "i am a boy!".capitalize()
'I am a boy!'
*startswith()和endswith():判断是否以某字符串开头/结尾
>>> "i am a boy!".startswith("i")
True
>>> "i am a boy!".startswith("I")
False
>>> "i am a boy!".startswith("am")
False
>>> "i am a boy!".endswith("!")
True
*isdigit():判断字符串全部都是数字,小数点也是False
*isnumeric:判断字符串全部都是数字,小数点也是False
区别:待补充
>>> "123".isdigit()
True
>>> "123.0".isdigit()
False
>>> "123".isnumeric()
True
>>> "123.0".isnumeric()
False
*isupper:判断是否为大写
*islower:判断是否为小写
>>> a
'i am a girl'
>>> a.islower()
True
>>> a.isupper()
False
>>> (a.upper()).isupper()
True
练习:
1.字符串反转
a="helloword"
a=list(a)
a.reverse()
print("".join(a))
a="helloword"
result=""
for i in range(len(a)-1,-1,-1):
result+=a[i]
print(result)
a="helloword"
result=""
for i in a[::-1]:
result+=i
print(result)
2.字符串排重
a="abcabc"
result=""
for i in a:
if i not in result:
result+=i
print(result)
a="abcabc"
result={}
for i in a:
result[i]=""
#利用key值唯一性
print(result)
print("".join(result.keys()))
a="abcabc"
result=list({}.fromkeys(a).keys())
print("".join(result))
>>> a="abcabc"
>>> "".join(set(a))
'bca'
3.统计字符串中单词数量
a="I am a boy"
print(len(a.split()))