Python-3:字符串操作/for循环

字符串操作/for循环

1. 字符串操作

  • 关于字符串
    字符串为可迭代对象,即可视为一个列表。如字符串"abcd"可视为四个元素的列表[a,b,c,d]。
In [38]:str1='qwerty'
#取第四个字符
    ...:str1[3]
Out[38]: 'r'

单行字符串用 ‘str’ 和 “str” 表示,多行字符串用’’’ str’’'表示。演示如下:

In [36]:str1='hhhh'
    ...:str1
Out[36]: 'hhhh'
In [37]:str3='''风路半途归何处
    ...:叶落青山人落土'''
    ...:str3
Out[37]: '风路半途归何处\n叶落青山人落土'
# \n为换行符
  • 拼接

各符号含义如下:

符号含义
str1 + str2将 str1 和 str2 连接起来
str*n将 n个 str 连接
str=’'str2".join(str1)在 str1的每个字符间插入str2

演示如下:

str1="We will have"
str2="perfect"
str00=" "
str3="GMV"

str01=str2+str00
#打印连接结果
print(u'Out[26]: str01= %s' % str01)
str03=(str2+str00)*3
#打印连接后复制结果
print(u'Out[27]: str03= %s' % str03)
strall=str1+" "+(str2+str00)*3+str3
#打印目标结果
print(u'Out[28]: strall= %s' % strall)
#join示例
print(u'Out[29]: strjoin= %s' % str00.join(str2))
#结果展示
Out[26]: str01= perfect 
Out[27]: str03= perfect perfect perfect 
Out[28]: strall= We will have perfect perfect perfect GMV
Out[29]: strjoin= p e r f e c t
  • .切割与删除
  1. 单分隔符切割
    当使用单分隔符切割时,字符串自带的方法 split( ) 定义如下表。切割后的结果为一个列表。
函数参数
split(sep,maxsplit)从左分割。sep:分隔符;maxsplit:从左开始分割的次数
rsplit(sep,maxsplit)从右分割。sep:分隔符;maxsplit:从右开始分割的次数

示例:将str1按中文逗号切割,结果为一个三个元素的列表。

In[31]:str1="寂山幽谷风轻渡,芋薯植田待云乌。虽未见山泉涌,但知雨落归何处。"
    ...:str1.split(',')
Out[31]: ['寂山幽谷风轻渡', '芋薯植田待云乌。虽未见山泉涌', '但知雨落归何处。']
  • 多分隔符切割
    利用多分隔符分割时,可使用 re 模块中的split函数。以下程序可以将一个长文本转化为短句。
In [73]: str1="寂山幽谷风轻渡,芋薯植田待云乌。虽未见山泉涌,但知雨落归何处。"
    ...: import re
    ...: str1=re.split('。|,',str1)
    #得到一个含五个元素的列表,因最后一个句号后无内容,第五个元素str1[4]为''
    ...: str1
    #删掉空值str1[4]
    ...: del str1[4]
    #得到四元素列表,每个元素为一个短句。
    ...: str1
Out[73]: ['寂山幽谷风轻渡', '芋薯植田待云乌', '虽未见山泉涌', '但知雨落归何处']

re 函数split(sep, str )参数如下:

符号与参数含义
sep分隔符,多个分隔符可用竖线隔开
str待分割的字符串
  • 按行分割
    若按行分割,可直接使用 str 自带的方法 splitlines()
In [51]: str3='''风路半途归何处
    ...: 叶落青山人落土'''
    ...: str3
    ...: str3.splitlines()
Out[51]: ['风路半途归何处', '叶落青山人落土']

或者:

In [52]: str3.split('\n')
Out[52]: ['风路半途归何处', '叶落青山人落土']
  • 删除
    可使用 str 自带的方法 strip( )。默认值为删掉空白符(即’\n’,’\t’,’ '等),也可自定义删除的字符。
#原字符串
In [54]: str1="   ----$$$$   We ordered a full table of food for our dinner+++$$$----    "
#去掉空格
    ...: str1.strip( )
Out[54]: '----$$$$   We ordered a full table of food for our dinner+++$$$----'
#去掉无关字符
In [55]: str1.strip(' ').strip('-').strip('$').strip('+').strip(' ')
Out[55]: 'We ordered a full table of food for our dinner'
  • 替换
    可使用 str 自带的方法 replace(str1,str2 )。str1为字符串中希望被替换的字符,str2为替换字符。(即将原字符串中的str1替换为str2)。
In [64]: str1="   ----$$$$   We ordered a full table of food for our dinner+++$$$----    "
    ...: str1=str1.strip(' ').strip('-').strip('$').strip('+').strip(' ')
    ...: str1.replace('We','They').replace('food','shit').replace('our','their')
Out[64]: 'They ordered a full table of shit for their dinner'

2. For循环

定义格式如下。代码表示对于每一个range(第一层循环的索引范围)里的index(第一层循环的索引)先执行term,并对这个index下range2(第二层循环索引范围)中的每一个index2(第二层循环的索引)执行term2。其中用缩进表示循环层级,定义for循环时要在首句句尾加冒号":"。

for [index] in [range]:
    [term]
    for [index2] in [range2]:
        [term2]

举例1:如下代码可将一个dataframe里的内容追加到一个list中。

In [68]: import pandas as pd
    ...: import numpy as np
    #空列表
    ...: a=[]
    #三行三列的随机数组成的DataFrame
    ...: b=pd.DataFrame(np.random.randn(3,3))
    #对于每一行
    ...: for i in b.index:
    #对于每一列
    ...:     for j in range(0,3):
    #追加到列表,loc[i][j]表示第i行j列
    ...:         a.append(b.loc[i][j])
    ...: 
    ...: print('This is the full list')
    ...: print(a)
    ...: print('this is the original dataframe')
    ...: print(b)
    
    #结果展示:
This is the full list
[0.8033786735002058, 0.10823419368089689, 1.1150495113488599, -0.2617825326267717, -0.8671800171766091, -1.3948295222778422, -0.3980521040261222, 1.3375154240107507, 1.2152120818025256]
this is the original dataframe
          0         1         2
0  0.803379  0.108234  1.115050
1 -0.261783 -0.867180 -1.394830
2 -0.398052  1.337515  1.215212

变量视图的结果如下:

举例2:表白神器(for+字符串操作)

str1="离开傻儿子的第"
str2="天"
str3="想他"
for i in range(0,10):
    str0=str1+str(i)+str2+','+str3*i
    print(str0)

编译视图的结果如下:
在这里插入图片描述
下期预告:条件语句

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值