zoukankan      html  css  js  c++  java
  • Python初学--字符串

    ASCII、Unicode和UTF-8的关系

    在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码

    记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:

    浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:

     

    -------------------------------------------------------------

    字符串格式化:

    name=input('请输入你的名字:')

    sex=input('请输入你的性别:')

    print('欢迎你:'+name) 第一种使用+号连接 建议少用

    print('欢迎你:',name) 使用,号连接

    print('str1 is ',str1,'str2 is',str2)

    print('欢迎你%s'%name) 使用% 占位符 一般使用这个方式

    print('欢迎你%s,你的性别是%s'%(name,sex)) 使用占位符%连接

     

    (一)占位符:

    %d 代表后面的变量是整数

    %f 代表后面跟的是浮点 小数 %.2f保留几位小数 会四舍五入

    %s 代表后面跟的是字符串

     

    (二)如果参数少的情况下,使用占位符比较简单 如果参数多的情况下 使用.format()比较简单

    age=int(input('请输入你的年龄:'))

    grade=float(input('请输入你的成绩:'))

    print('你的年龄{yourage},e你的成绩是{yourgrade}'.format(yourage=age,yourgrade=grade))

    括号中(qianmian=shuru) 等号前面字段是自己占位时定义的字段,等号后面填的是输入的变量名

    .format不能和占位符一起使用 ?不确定

    使用.format时 使用了多少位小数就能保存多少位 不会四舍五入

     

    age=int(input('输入你的分数:'))

    grade=float(input('输入你的成绩:'))

    print('你的成绩年龄是:%s'%age)

    print('你的成绩是:%f'%grade)

    print('你的年龄是:%s,你的分数是:%.2f'%(age,grade))

    print('你的年龄是{you_age},你的成绩是{you_grade}'.format(you_age=age,you_grade=grade))

     

    #总结,fomat不关注数据的类型,但%s需要关注不同的数据类型,用不同的字符来占位 如:%s %0.2f %d等等

    # 数据多的时候用format 数据少可以直接用%s

    ----------------------------------------------------------------

    字符串操作

    字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值

    username = 'li'

    username[0]

     

    打印内存地址

    namess1=['aaa','bbb']

    namess2=['aaa','bbb']

    print(id(namess1))

    print(id(namess2))

    print(namess1 is namess2)

    ----------------------------------------------------------

    所有字符串的方法,它都不会修改原来字符串的值,都会产生(return 返回)一个新的字符串

    但列表能修改值,所以列表的方法一般不会返回值,只会直接修改,导致print 的时候需要先赋值才能打印出东西

     

    必须要会的字符串方法

    import string

    print(string.ascii_letters+string.digits)#大小写字母+数字

     

    find和index

    # print(name.find('n'))#查找字符串的索引 找不到就会返回-1

    # print(name.index('n'))#查找字符串的索引 找不到就会直接报错

    列表和字符串都有index方法 但是列表没有find方法

     

    format: 格式化字符串

    name22='lzc'

    age22=22

    print('{name},{age}'.format(name=name22, age=age22))#格式化字符串

     

    print('abA123'.isalnum()) # 是否包含数字字母

    print('122'.isdigit()) # 是否是数字

    print(name.lower()) # 变成小写

    print(name.upper()) # 变成大写

    strnames = 'ABCEDF'

     

    join 以指定的连接符拼接可迭代对象 返回字符串

    a_list=['q','d','h','a']

    print(''.join(a_list)

    print('**'.join(a_list) 指定的连接符

    结果:

    qdha

    # join是用来通过某个字符串拼接一个可迭代对象(列表,元组、字典?)的每个元素的 join只能拼接字符串类型的 int类型的是不能拼接的

     

    strip 去掉两边的空格或者指定字符

    # print(' mysql '.strip()) # 默认去掉两边的空格和换行

    # print('mysqlm '.strip('m'))#当你传入某个字符串的话,它就只会去掉你指定的字符串

    # print(' mysql '.lstrip())#默认去掉左边的空格和换行 重要

    # print(' mysql '.rstrip())#默认去掉右边的空格和换行 重要

     

    replace # 替换字符串

    a='hello world'

    b=a.replace('world','python')

    print(b)

     

    split 以空格分割字符串,并将分割的list返回 类似与join相反

    name1 = 'zcl p y zyz'

    # print(name1.split())

    # print(name1.split(‘,’))

    #切割字符串,返回一个list,按照你指定的字符串去分隔这个字符串,然后放到一个list里面

    #如果你什么都不写的话,按照空格分割,多个空格也算一个

     

    ---------------------------------------------------------

    join和split的区别;

    name='lzc,liushneg,liuyang'

    print('split:',name.split())

     

    name1=['yubo','hahha','hehhe']

    print((',').join(name1))

    结果如下:

    split: ['lzc,liushneg,liuyang']

    yubo,hahha,hehhe

     

    split 是 切割字符串,返回一个列表 字符串变为列表

    join 适用于列表变为字符串

     

    --------------------------------------------------------------

    其他操作:

     

    # p = str.maketrans('abcdefg','1234567')#前面的字符串和后面的字符串做映射

    # print('cc ae gg'.translate(p))#输出按照上面maketrans做映射后的字符串

    # #下面是反解

    # new_p = str.maketrans('1234567','abcdefg')

    # print('cc ae gg'.translate(new_p))

     

    print('1+2+3 1+2+3+4'.splitlines())#按照换行符分割

    上面那个可以用print('1+2+3 1+2+3+4'.split(' '))实现 不信 那你试试哈

     

    print('Abcdef'.swapcase())#大小写反转

     

    ---------------------------------------------------------------

    # 字符串格式化 4种表达方式

     

    # 打印内存地址

     

    #打印指定下标的元素

     

    # 打印数据类型

     

    # 查询列表

     

    #查询字符串中的不存在的字符用两种方法

     

    #查询字符串中的存在的字符用两种方法

     

    #连接一个列表中字符(非数字 )

     

    #拆分字符串中并返回列表

     

    # 检验字符串中是否包含数字或字母

     

    #检验字符串中是否是数字

     

    # 把字符串变成大写

     

    #把字符串变成小写

     

    #去掉两边的空格 去掉左边的空格 去掉右边的空格

     

    #去掉两边指定的字符 z左边的字符 右边的字符

     

    # 替换字符串

     

    # 前面和后面的字段做个映射

     

    # 按照换行符分割

     

    # 大小写反转

     

    # 打印第三第五个字符 打印第二个以后的所有字符 打印除最后一个以外的所有字符

     

    字符串练习题目:

     

    -------------------------------------------------------------------------

    # x = "234567ASDsdfghj" #切片和索引

     

    # x = "hello" #显示字符串长度,注意是从1开始

     

    # x = "hello world ASDF" #返回长度为100的字符串,并在左侧填充0

     

    # x = "hello world ASDF" #小写变为大写

     

    # x = "234567ASDsdfghj" #大写变为小写

     

    # x = "234567sdfghj" #判断是否含有至少一个区分大小写的字符,并且这些都是小写

     

    # x = "hello world" #返回标题化字符串

    # x = "Hello World" #翻转字符串中的大小写

    # x = " hello world " #同时执行lstrip和rstrip,删除两边

     

    # x = "hello world" #检测是否以xx开头或结尾

     

    # x = "234567ASDsd fASDghjASD" #以 行分隔,返回一个包含元素的列表

     

    # x = "234567ASDsdfASDghjASD" #以A分隔x,并可指定次数

     

     

    # x = "234567ASDsdfASDghjASD" #替换字符串,并且可指定次数

     

    # x = "234567ASDsdfghj" #以7为中间符,分割x

     

    # x = "234567ASDZzsdfghj" #返回x中最大的字母(小写)

     

    # x = "121 234567ASDsdfghj" #截掉x左边的1

     

    # x = "234567sdfghj" #左对齐,并以*填充剩余数量(20)

     

    x = "*" #以x为分隔符重新生成y

     

    # x = "Asdf112321 Gh123J" #判断是否首字符为大写,其它为小写

    # x = " " #判断是否只包含空格

    # x = "234567f" #判断是否只包含*数字字符*

    # x = "234567" #判断是否全为数字

    # x = "234567sdfghj" #判断是否全为十进制数字

    # x = "234567sdfghj" #判断是否全为字母

    # x = "234567sdfghj" #判断是否全为字母或数字

    # x = "hello world" #index同find,但查不到,会返回异常!!!

    # x = "hello world" #find查找字符串并返回索引值

    # x = "name:{2},age:{1},sex:{0}" #format格式化字符串

    # x = "hello world" #在指定范围内,返回l的次数

    # x = "hello world" #中间插入字符串,两边/填充*

     

    http://www.cnblogs.com/LiChaoAI/p/6959607.html

     

     

     

    作业2:

    字符串 a = "aAsmr3idd4bgs7Dlsf9eAF"

    1.请将 a 字符串的数字取出,并输出成一个新的字符串。

    2.请统计 a 字符串出现的每个字母的出现次数(忽略大小写,a 与 A 是同一个字母),

    并输出成一个字典。 例 {'a':3,'b':1}

    3.请去除 a 字符串多次出现的字母,仅留最先出现的一个,大小写不敏感。例

    'aAsmr3idd4bgs7Dlsf9eAF',经过去除后,输出 'asmr3id4bg7lf9e'

    4.按 a 字符串中字符出现频率从高到低输出到列表,如果次数相同则按字母顺序排列。

     

    http://blog.csdn.net/youyouheheda/article/details/51212305

     

     

     

     

     

     

     

     

  • 相关阅读:
    C语言利用fgetc复制拷贝文件内容
    linux 安装gcc 和 g++
    C宏定义和使用
    C的realloc的动态分配扩展和缩小内存
    C用malloc 向系统申请一个大小为n*4个字节的内存块
    GDB core命令的使用调试段错误
    GDB的安装
    C字符指针数组的使用
    C二维字符数组的使用及如何获取二维数组的总行数和总列数!
    C二维数组用指针地址遍历
  • 原文地址:https://www.cnblogs.com/zunchang/p/7638133.html
Copyright © 2011-2022 走看看