--------------------------------------    编程能是大模型应用的天花板..................................................................

所以要好好将大模型应用在企业一定要好好练好最看不起的一环,基础能力字符串处理  本文档来自老男孩培训Alex 课程记录,

我在2017年听过这个老师的课,非常不错,所以在写Ai 应用开发的时候,在基础部份会参考高手的成果

name = "my name is alex"

pring(name.caitalize())  首字母大写

pring(name.count("my"))  统计字符串出现的次数,可以是单字或多词

print(name.casefold())  这个说是转换写成小写,还会对特殊字符处理,一处理就可能不是我们想要的了,况且还有更好的相同功能的方法,所以很少少用,用不着

pring(name.center(50,"_")) 居中打印,打印50个字符,不够用——补位

print(name.ljust(50,"***"))  左边对齐,右边的用*** 代替,补齐50位

print(name.rjust(50,'*')) 右对齐,不多的补**

print("A".lower())   大写转小写    "upp".upper()  小写转大写

"\nAlex\n".lstrip() 左边去空格   rstip()  去掉右边  strip() 去掉空格

pring(name.encode)  编码相关,将二进制编成字节

pring(name.endswith("alex"))  是否是这个结尾 返回true 或 false

pring(name.expandtabs(tabsize = 30)) 字符串中出现的\t  等于多少个空格
pring.find("y")  找到字符串的索引取出来,用于切片时候用   那么。name[name.find("name") :])
pring(name.format(name="alex",year = 33))  格式化字符串,将字符串中的{name} 变量替换
print(name.format_map({}) 可以传一下字字賟 来格式化字符串,通常format 就够用了

pring(name.isalnum)  是不是阿拉伯数字

print (''ssss".isalpha()) 是不是纯英文

print("1A".isdecimal)  是不是只包括十进制

print("1A".isdigit) 是不是整数

title(),将字母的首字母变大写

translate 映射majetrabs   这二个方法一起使用,先用majetrabs 创建一个射映表,然后translate 转换

# 创建字符映射表
mapping = str.maketrans("aeiou", "12345") # 使用translate()方法进行字符替换
string = "Hello, World!"
translated_string = string.translate(mapping) print(translated_string) 输出结果是 H2ll4, W4rld!
解释 先给aeiou 映一个其它字符,然后在使用中遇到这几个字符就替换成映射字符,比较好理解

 replace   替换

print("xsy".isidentifier())  是不是一个合法的变量名。支持中文英文,但是不能数字开头

print("33.33".isnumeric())是不是只有数字

"my".isprintable 是不是包括可打针印的,其实就是说这个字符中是不是非输出的法字符,说是说\n  \t 这样的字符,有制表符会返false

istitle()  是不是每个单词都 是首字母大写,单词之间有空格

join     '+++'.join(['a','b','c'])   将列表的元素用什么点连起来。

split()  将字符串切成列表

string = "Hello, World! How are you?"
words = string.split()
print(words) //输出结果 ['Hello,', 'World!', 'How', 'are', 'you?']  

字典操作

可以将每个人的信息保存起来,比如省市县的关联信息,一个人信息这些都 可以用字典来保存,info = {"姓名":"张三"}} 有索引,有信息的元素叫做字典,

编程中叫有key和valu由于是key 是唯 一的,所以字母无序,

假设一个字典是这样子

info = {
"stu1101": "TengLan",
"stu1102": "Loula",
"stu1103": "Maliy"
} name = info["stu1101"]
print(name) # 输出: TengLan

打印这个字典方式是:
for key, value in info.items():
print(key, value)

取出一个值:
print(info["stu1101"])
查找
"stu1101" in info //True
info["stu11011"] 查找这个值,但是这个值如果没有会报错,用get不会错,info.get("stu11011")

修改一个值
info["stu1101"] = "武腾兰"

删除
del info["11011"] 删除
info.pop("stu11011")
info.popitem()随便删一个
更新整个字典,可以用一个新字典更新,相同dey 覆盖,不同的增加 info.update(b)
将一个例表转换为列表 info.item()
info.formdeys([6,7,9])创建一个新字典,key 是6,7,8
c = dict.fromkeys([6, 7, 8], [1, {"name": "alex"}, 444])
c = dict.fromkeys([6, 7, 8], [1, {"name": "alex"}, 444])
运行结果是:
{
6: [1, {"name": "alex"}, 444],
7: [1, {"name": "alex"}, 444],
8: [1, {"name": "alex"}, 444]
}

  以下代码是说dict.fromkeys()如果用以下方式创建的话,可以value 是一个引用的值,以后修改其中一个值,会影起其它值改变,

在这个代码段中,​c​ 是通过 ​dict.fromkeys()​ 方法创建的字典,该方法的作用是使用指定的键列表创建一个新字典,其中所有的值默认为 None 或者指定的默认值。

c = dict.fromkeys([6, 7, 8], [1, {"name": "alex"}, 444])
c = dict.fromkeys([6, 7, 8], [1, {"name": "alex"}, 444])

运行这段代码后,​c​ 的内容将是: {
6: [1, {"name": "alex"}, 444],
7: [1, {"name": "alex"}, 444],
8: [1, {"name": "alex"}, 444]
}
{
6: [1, {"name": "alex"}, 444],
7: [1, {"name": "alex"}, 444],
8: [1, {"name": "alex"}, 444]
}

注意,在这个操作中,由于 ​dict.fromkeys()​ 方法创建的字典中每个键都引用同一个列表对象 ​[1, {"name": "alex"}, 444]​,因此当修改其中一个键对应的列表时,其他键对应的列表也会随之改变。这是因为它们实际上引用的是同一个对象。 如果希望每个键引用不同的列表对象,可以考虑使用以下方式创建 ​c​: c = {key: [1, {"name": "alex"}, 444] for key in [6, 7, 8]}
c = {key: [1, {"name": "alex"}, 444] for key in [6, 7, 8]}

这样每个键的值都是一个新的列表对象,而不是共享同一个列表对象,指定的值实际上是同一个对象的引用。当您修改其中一个键对应的值时,因为其他键对应的值与之相同,所以会看到它们也发生了变化。 如果您希望每个键引用不同的列表对象,可以使用以下方式创建 ​c​: keys = [6, 7, 8]
values = [1, {"name": "alex"}, 444]
c = {key: list(value) for key in keys}
keys = [6, 7, 8]
values = [1, {"name": "alex"}, 444]
c = {key: list(value) for key in keys}

这样每个键的值都是一个新的列表对象,而不是共享同一个列表对象。 以下是修正后的代码示例: keys = [6, 7, 8]
values = [1, {"name": "alex"}, 444]
c = {key: list(value) for key in keys}
print(c) c[7][1]['name'] = "Jack Chen"
print(c) # 输出: {6: [1, {'name': 'alex'}, 444], 7: [1, {'name': 'Jack Chen'}, 444], 8: [1, {'name': 'alex'}, 444]} keys = [6, 7, 8]
values = [1, {"name": "alex"}, 444]
c = {key: list(value) for key in keys}
print(c) c[7][1]['name'] = "Jack Chen"
print(c) # 输出: {6: [1, {'name': 'alex'}, 444], 7: [1, {'name': 'Jack Chen'}, 444], 8: [1, {'name': 'alex'}, 444]}

 案例,叫三级查询,程序运行时,先列出要查询省份名称,然后用户输出省的名称和编号进行相询,如果输入某个省的编号或省份名称,系统就列表这个省下面所有市的序号和名称 ,然后提示请输入你要查那个市 ,列出市下面所有县的编号和名称,用户可以查某一个市所有的县。在任意菜单都 可以按Q退程序,按E 返回一上级。如果没有上级则不显示,返回一级。

data = {
"1": {"name": "浙江省", "cities": {
"1": {"name": "杭州市", "counties": {
"1": "西湖区",
"2": "上城区",
"3": "下城区"
}},
"2": {"name": "温州市", "counties": {
"1": "鹿城区",
"2": "龙湾区",
"3": "瓯海区"
}}
}},
"2": {"name": "江苏省", "cities": {
"1": {"name": "南京市", "counties": {
"1": "玄武区",
"2": "白下区",
"3": "秦淮区"
}},
"2": {"name": "苏州市", "counties": {
"1": "姑苏区",
"2": "虎丘区",
"3": "吴中区"
}}
}}
} # 查询数据的函数,根据级别和代码查询省、市、县信息
def query_data(data, level, code=None):
# 无限循环,直到用户输入"q"退出程序
while True:
# 如果有传入代码,则根据代码获取对应数据,否则使用初始数据
if code:
current_data = data[code]
else:
current_data = data # 打印提示用户选择省、市或县
print("请选择{}:".format(level))
# 遍历当前数据的键值对,打印编号和名称
for key, value in current_data.items():
print("{}: {}".format(key, value["name"])) # 接收用户输入,可以是编号、名称,"q"退出,或者"e"返回上一级
user_input = input("请输入编号或名称,按Q退出,按E返回上一级:") # 如果用户输入为"q",退出程序
if user_input.lower() == "q":
break
# 如果用户输入为"e"且当前级别不是省,返回上一级
elif user_input.lower() == "e" and level != "省":
return
# 如果用户输入在当前数据中
elif user_input in current_data:
# 如果当前级别是省,调用query_data函数查询市的数据
if level == "省":
query_data(current_data[user_input]["cities"], "市", "cities")
# 如果当前级别是市,调用query_data函数查询县的数据
elif level == "市":
query_data(current_data[user_input]["counties"], "县", "counties") # 开始进行省份查询
query_data(data, "省")

  



  

python Ai 应用开发基础训练,字符串,字典,文件的更多相关文章

  1. python 全栈开发,Day26(hashlib文件一致性,configparser,logging,collections模块,deque,OrderedDict)

    一.hashlib文件一致性校验 为何要进行文件一致性校验? 为了确保你得到的文件是正确的版本,而没有被注入病毒和木马程序.例如我们经常在网上下载软件,而这些软件已经被注入了一些广告和病毒等,如果不进 ...

  2. 巨蟒python全栈开发-第8天 文件操作

    一.文件操作 今日大纲: 1.文件操作->open() open 打开 f=open(文件路径,mode='模式',encoding='编码格式') #python最最底层操作的就是bytes ...

  3. python全栈开发笔记---------字符串格式化

    字符串格式化 %s 可以接收任何值, %d只能接收整形 .其他类型报错 msg ='i am %s my body' %'ales' print(msg) #i am ales my body msg ...

  4. Python之旅Day2 元组 字符串 字典 集合

    元组(tuple) 元组其实跟列表差不多,也是存一组数,与列表相比,元组一旦创建,便不能再修改,所以又叫只读列表. 语法: names = ("Wuchunwei","Y ...

  5. python 全栈开发,Day5(字典,增删改查,其他操作方法)

    一.字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.存储大量的数据,是关系型数据,查询数据快. 列表是从头遍历到尾字典使用二分查找 二分查找也称折半查找(Bi ...

  6. Python全栈开发-执行字符串形式的语句和字符串形式的表达式方法(即exec和eval方法)

    Python有时需要动态的创造Python代码,然后将其作为语句执行  或  作为表达式计算. exec用于执行存储在字符串中的Python代码.   1. 语句与表达式的区别:表达式是 某事,语句是 ...

  7. python运维开发常用模块(四)文件对比模块difflib

    1.difflib介绍 difflib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持 输出可读性比较强的HTML文档,与Linux下的diff命令相似.我们可以 使用dif ...

  8. python全栈开发笔记---------数据类型---字典方法

    def clear(self) 清空字典里所有元素 # info = { # "k1":18, # "k2":True, # "k3":[ ...

  9. python全栈开发笔记---------数据类型-----字典dict

    字典 #dict #1.基本结构 info= { "k1" : "v1", #键值对 "k2" : "v2" } ### ...

  10. Python 全栈开发:dict(字典)常用方法操作、dict嵌套

    数据类型的划分:可变数据类型和不可变数据类型. 不可变数据类型(可哈希):元祖.bool.int.str 可变数据类型(不可哈希):list.dict,set(集合) dict(字典): dict(字 ...

随机推荐

  1. python list 转二叉树 及遍历

    from __future__ import annotations from typing import Union from collections import deque class Tree ...

  2. Hadoop超详细讲解之单节点搭建

    1 Hadoop介绍 Hadoop是Apache旗下的一个用java语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台.允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理. ...

  3. 性能暴增70%!AMD线程撕裂者RPO 7000将于10月19日发布: 96核心Zen 4史无前例

    据wccftech最新报道,AMD的下一代Ryzen Threadripper(线程撕裂者)PRO 7000"Storm Peak"CPU将于10月19日作为终极工作站解决方案亮相 ...

  4. 2、Web前端学习规划:HTML - 学习规划系列文章

    今天先写Web前端最基本的语言:HTML.目前已经到了HTML5版本,作为Web基本语言,笔者认为这个是最先需要学习的语言. 1.  简介: HTML(HyperText Markup Languag ...

  5. Go语言的100个错误使用场景(21-29)|数据类型

    目录 前言 3. Data types 3.5 低效的切片初始化(#21) 3.6 切片为 nil 与为空混淆(#22) 3.7 没有正确检查切片是否为空(#23) 3.8 错误的切片拷贝(#24) ...

  6. Linux反空闲的设置和关闭

    有一定工作经验的运维人基本都会遇到这样的场景,某个窗口自动断开了,提示超时: [oracle@jystdrac1 ~]$ timed out waiting for input: auto-logou ...

  7. Oracle预防alert日志过大的脚本:del_alertlog.sh

    Oracle预防alert日志过大的脚本 参考:https://blog.csdn.net/jc_benben/article/details/88798523 在原文思路的基础上,做了一些修正,实测 ...

  8. Java 重复注解 @Repeatable

    1. 设计一个重复使用的注解: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Repeatable(AppSpecs.c ...

  9. Spring Boot 跨域的问题

  10. [Java][并发编程]AQS以及其相关同步器的源码解析

    AQS以及其相关同步器的源码解析 概念 AQS(AbstractQueuedSynchronizer)抽象的队列同步器.是用来构建锁或者其他同步器组件的重量级基础框架以及整个JUC体系的基石.通过内置 ...