6.1 字符串类型
字符串类型(str)是由多个字符组成的。
我们可以把字符串当成一个整体,也可以取得字符串的任何部分。
一、 字符串的表示
(1) 用单引号、双引号或三引号括起来的一串字符就是字符串。
A='这是单引号形式的字符串'
B="这是单引号形式的字符串"
C="""这是三引号形式的字符串""" |
特殊字符在python中的写法
(转义字符) | 所代表的特殊字符 |
某行代码最后写上\,表示下一行继续 | |
\\\ | \\ 后倒斜线 |
\\’ | ’ 单引号 |
\\” | ” 双引号 |
还有更多,用到时可查表 |
例如:我们要写一个文件名 C:\\123\2.txt时应写作:
Filename="C:\\\\123\\\2.txt" |
Filename = r"c:\\123\t.txt" |
(1) 获取字符串的一个字符
S = "abcdefg"
print( S[0] )
print( S[1] )
print( S[-1]) | a b g |
S = "abcdefg"
print( S[0:3] )
print( S[1:4] )
print( S[1:-1])
print( S[2: ] )
print( S[ :2 ] ) | abc bcd bcdef cdefg ab |
字符 | a | b | c | d | e | f | g |
正序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
负序号 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
例如:
S = "abcdefg"
S[0]="P" |
会出现下面的错误 |
Traceback (most recent call last): File "D:\\0delphi-2010\\0908\est.py", line 36, in S[0]="P" TypeError: 'str' object does not support item assignment |
方法一:
将”abcdefg”中的 a 改成P:
S = "abcdefg"
S = "P"+S[1: ]
print( S ) | Pbcdefg |
将”abcdefg”中的 c 改成P:
S = "abcdefg"
S = S[:2]+"P"+S[3:]
print( S ) | abPdefg |
6.2 字符串转化为单个字符的列表
格式 A = [ x for x in 字符串 ]
S = "abcdefg"
A = [ x for x in S ]
print( "S=%s"%S )
print( "A=%s"%A ) |
S= abcdefg A= ['a', 'b', 'c', 'd', 'e', 'f', 'g'] |
格式一 S = "".join( 字符串列表 )
A = [ "1", "2
S = "".join(A)
print( “A=%s”%A)
print( "S=%s"%S) |
A= ['1', '2', 'A', 'B', 'OK'] S= 12ABOK |
A = [ "1", "2
S = ",".join(A)
print( “A=%s”%A)
print( "S=%s"%S) |
A= ['1', '2', 'A', 'B', 'OK'] S= 1,2,A,B,OK |
6.4 将一个字符串按指定的分隔符拆分成字符串列表
格式一 : A = S.split( 分隔符)
格式二 : A = S.split( )
格式二中,没有指定分隔符,表示以空白符(空格,回车,换行,制表符)作为分隔符。
S = "10,20,3,-7,10"
A = S.split(
print("S=%s"%S)
print("A=%s"%A) | S= 10,20,3,-7,10 A= ['10', '20', '3', '-7', '10'] |
6.5 将一个字符串转化为数字
格式: x = int( s ) # s 是字符串格式的整数
y = float( s ) # 将 s 转化为实数
遗憾的是,并非所有字符串都能成功转化为数字。
我们编写了两个函数strtoINT 和 strtoN,供大家参考使用.
题目: S= "UY,12,34,56,Ab,OK,IM" , 请将该字符串中用逗号隔开的数提出来,并求数字的和是多少?
#coding=gbk
# 字符串转化为整数的函数
# 如果转化失败,返回的值为0
def strtoINT( s ):
try:
x = int( s )
except:
x = 0
return x
# 字符串转化为实数的函数
# 如果转化失败,返回的值为0
def strtoN( s ):
try:
x = float( s )
except:
x = 0.0
return x
#使用举例
s="UY,12,34,56,Ab,OK,IM"
A=s.split(
m = 0
for x in A:
m = m + strtoINT(x )
print("m=%s"%m) |
sm= 102 |
#coding=gbk
S = "I am a worker."
S1 = S.upper()
S2 = S.lower()
print( "S=",S)
print( "S的大写形式=%s"%S1)
print( "S的小写形式=%s"%S2) | S= I am a worker. S的大写形式= I AM A WORKER. S的小写形式= i am a worker. |
格式 S = “格式串” % ( x1,x2,…,xn)
格式串:
%d 整数
%f 浮点数
%e %E 实数的科学计数法
%x %X 输出16进制格式的整数
%o 输出8进制格式的整数
%s 字符串
看到这些格式,与C语言的printf的格式串是一样的。
s="%d,%10d,%10.8d" % (4,5,6)
print(s) | 4, 5, 00000006 |
%d 表示 右边是一个 int数
%10d 表示 右边是一个 int数, 最少字符数10个,不足时左边补空格
%10.8d 表示 右边是一个 int数, 最少字符数10个,不足时左边补空格, 8的意思是最少要输出8个数字,不足时左边补0.
s="%f,%20f,%20.8f" % (4.7,5.1,6.2)
print(s) |
4.700000, 5.100000, 6.20000000 |
%f 表示 右边是一个 float数
%20f 表示 右边是一个 float数, 最少字符数20个,不足时左边补空格
%20.8f 表示 右边是一个 int数, 最少字符数20个,不足时左边补空格, 8的意思是最少要输出8位小数.
#coding=gbk
#输出九九乘法表
for i in range(1,9+1):
for j in range(1,i+1):
print( "%d*%d=%2d" % ( i,j,i*j)),
print(" ") |
1*1= 1 2*1= 2 2*2= 4 3*1= 3 3*2= 6 3*3= 9 4*1= 4 4*2= 8 4*3=12 4*4=16 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8= 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 |