python字符串与变量名互相转换,字典,list操作

locals是python的内置函数,他可以以字典的方式去访问局部和全局变量

vars()本函数是实现返回对象object的属性和属性值的字典对象

eval()将字符串str当成有效的表达式来求值并返回计算结果

go 复制代码
#!/usr/bin/python3
#-*- coding = uft-8 -*-
guo = 666
str1 = "guo"
str2 = "__doc__"
class c:
    a = 100
print("第一种方法:", locals()[str1])
#flag = locals()[str2]

print("第二种方法:", vars()[str1])

print("第三种方法:", eval(str1))

字符串→变量名

eval 执行表达式

exec 执行语句

字符串←变量名

globals 全局变量

locals 局部变量

vars 类的成员

go 复制代码
i = 0
exec('j = 0')
print(globals())
go 复制代码
class Dummy(object):
    def __init__(self) -> None:
        self.i = 0
        exec('self.j = 0')

dummy = Dummy()
print(vars(dummy))
go 复制代码
class EasyArgs(object):
    def __init__(self, **kvps):
        self.add(**kvps)
    def add(self, **kvps):           # 函数参数名转化成字符串(字典的键)
        for k,v in kvps.items():
            exec(f'self.{k} = None') # 字符串转化成示例的成员变量名
            vars(self)[k] = v

if __name__ == '__main__':
    args = EasyArgs(batch_size = 32)
    args.add(epochs = 64)
    print(vars(args))                # 成员变量名转化成字符串
    print(args.batch_size)           # 直接根据成员变量名使用变量
    print(args.epochs)
go 复制代码
#exec 会把字符串两边的引号去掉

info_dict = {'create_time':'ct','user_id':'uid', 'cookie_id':'ci', 'product_name':'pn', 'product_version':'pv', 'device':'di'}

for i in info_dict.items():

exec(i[0] + "='%s'" % i[1])

print create_time #这里在打印时create_time必须全部写,不会提示。

编号函数描述

序号 函数 注释
1 int(x [,base]) 将x转换为整数。如果x是字符串,则要base指定基数。
2 float(x) 将x转换为浮点数。
3 complex(real [,imag]) 创建一个复数。
4 str(x) 将对象x转换为字符串表示形式。
5 repr(x) 将对象x转换为表达式字符串。
6 eval(str) 评估求值一个字符串并返回一个对象。
7 tuple(s) 将s转换为元组。
8 list(s) 将s转换为列表。
9 set(s) 将s转换为集合。
10 dict(d) 创建一个字典,d必须是(key,value)元组的序列
11 frozenset(s) 将s转换为冻结集
12 chr(x) 将整数x转换为字符
13 unichr(x) 将整数x转换为Unicode字符。
14 ord(x) 将单个字符x转换为其整数值。
15 hex(x) 将整数x转换为十六进制字符串。
16 oct(x) 将整数x转换为八进制字符串

删除开头空白lstrip()、删除末尾空白rstrip()、删除两端空白strip()

go 复制代码
a='pp   '
a.rstrip()
print(a)
#字符串中添加制表符可以使用字符组合\t
print("\tppp")
字符串中添加换行,可以使用换行符\n
print("\tppp\n")
同时包含制表符和换行符,字符串 \n\t
print("\tppp\n")
name = "Ada Lovelace"

print(name.upper())

print(name.lower())

Python-python强制转换成字符串

go 复制代码
a = 123
b = str(a)
print(b, type(b))  # '123', <class 'str'>
a = 123
b = repr(a)
print(b, type(b))  # '123', <class 'str'>
a = '中文'
b = unicode(a, 'utf-8')
print(b, type(b))  # u'\u4e2d\u6587', <class 'unicode'>
go 复制代码
def namestr(obj, namespace):
    return [name for name in namespace if namespace[name] is obj]
print(namestr(lr_origin,globals()),'\n',
namestr(lr_origin,globals())[0])

import inspect, re
def varname(p):
  for line in inspect.getframeinfo(inspect.currentframe().f_back)[3]:
    m = re.search(r'\bvarname\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)', line)
    if m:
      return m.group(1)
varname(lr_origin)

Python如何创建字典

go 复制代码
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict)
#访问字典的值
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict['语文'])        # 通过键"语文"获取对应的值
 #添加键值对
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict['物理'] = 97    # 添加 '物理':  97
print(scores_dict)  # {'语文': 105, '数学': 140, '英语': 120, '物理': 97}
#删除键值对
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
del scores_dict['数学']   # 删除 '语文': 105
print(scores_dict)      # 输出 {'语文': 105, '英语': 120}
#修改字典值
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict['数学'] = 120  # 修改将"数学"修改为120
print(scores_dict)      # 输出 {'语文': 105, '数学': 120, '英语': 120}
判断键值对是否存在
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
# 判断scores_dict是否包含名为'语文'的key
print('语文' in scores_dict)          # True
# 判断scores_dict不包含'历史'的key
print('历史' not in scores_dict)      # True
#clear()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict)  # 输出 {'语文': 105, '数学': 140, '英语': 120}
 
scores_dict.clear()     # 删除字典所有内容
print(scores_dict)      # 输出{}
#get()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.get('历史'))    # 输出 None
print(scores_dict['历史'])      # 报错 KeyError: '历史'
#update()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict.update({'语文': 120, '数学': 110})
print(scores_dict)      # 输出{'语文': 120, '数学': 110, '英语': 120}

#items()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.items())  # 输出 dict_items([('语文', 105), ('数学', 140), ('英语', 120)])
#keys()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.keys())  # 输出 dict_keys(['语文', '数学', '英语'])

#values()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.values())  # 输出 dict_values([105, 140, 120])
#pop()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict.pop('英语')   # 删除'英语'的键和值
print(scores_dict)  # 输出{'语文': 105, '数学': 140}
#popitem()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.popitem())  # 输出('英语', 120)
#setdefault()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
# 设置'语文'默认值为100
scores_dict.setdefault('语文', 100)
print(scores_dict)          # 输出{'语文': 105, '数学': 140, '英语': 120}
 
# 设置'历史'默认值为140
scores_dict.setdefault('历史', 140)
print(scores_dict)          # 输出{'语文': 105, '数学': 140, '英语': 120, '历史': 140}
#fromkeys()方法
scores_dict = dict.fromkeys(['语文', '数学'])
print(scores_dict)  # 输出{'语文': None, '数学': None}
 
scores_dict = dict.fromkeys(('语文', '数学'))
print(scores_dict)  # 输出{'语文': None, '数学': None}
 
# 使用元组创建包含2个key的字典,指定默认的value
scores_dict = dict.fromkeys(('语文', '数学'), 100)
print(scores_dict)  # 输出{'语文': 100, '数学': 100}
#len()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(len(scores_dict))  # 输出 3
#str()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(str(scores_dict))  # 输出{'语文': 105, '数学': 140, '英语': 120}
#type()方法
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(type(scores_dict))  # 输出<class 'dict'>
#Python字典的for循环遍历
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for key in scores_dict:
print(key)
#遍历value的值
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for value in scores_dict.values():
    print(value)
#遍历字典键值对
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for key in scores_dict:
print(key + ":" + str(scores_dict[key]))    # 返回字符串
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for i in scores_dict.items():
print(i)    # 返回元组
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for key, value in scores_dict.items():
    print(key + ':' + str(value))

#将两个列表组成一个字典
list_a = ['zhangsan', 'lisi', 'wangwu']
list_b = ['14', '42', '23']

dicts = dict(zip(list_a, list_b))

print(type(dicts))
print(dicts)

# 输出结果
>>> <class 'dict'>
    {'zhangsan': '14', 'lisi': '42', 'wangwu': '23'}
#将元组转换为列表
# 定义元组
GFG_tuple = (1, 2, 3)

# 将元组转换为列表
GFG_list = list(GFG_tuple)
print(GFG_list)
#使用 map() 函数将元组转换为列表
# 定义元组
GFG_tuple = (1, 2, 3)

# 使用 map 函数将元组转换为列表
GFG_list = list(map(lambda x: x, GFG_tuple))

print(GFG_list)
#把列表转成元组 使用tuple
list_a = [1, 2, 3, 4, 5, 6]
list_b = tuple(list_a)
print(list_b)
#列表的基本操作
#修改元素: 列表名【索引】= 新值
#增加元素 append()方法
#insert()方法 
guests = ['张三','李四','王五','小阿丁']
guests.insert(0,'小红')
#注意:列表每次增加的元素可以是任何类型的
#删除元素:del命令
del guests[0]
#pop()方法默认删除最后一个元素
guests=['张三', '李四', '王五', '小阿丁']
guests.pop(1)
#remove()方法 
guests.remove('李四')
'''
len()           #统计和返回指定列表的长度
in()   not in()       #判断指定元素是否在列表中
index()         #在列表中那个查找指定的元素,若存在则返回指定元素在列表中的索引,若存在多个则返回最小的,若不存在会报错
count()         #统计并返回列表中指定元素的个数
sort()           #列表元素从小到大升序排序,改变了源列表的元素的顺序
sorted()         #列表元素从小到大升序排序,生成排序后的副本,不改变原列表的顺序
nums.sort()
nums.sort(reverse = True)

'''
#列表的扩充 "+"运算可以将两个列表"加"起来,生成一个新的列表,但是原来的列表并没有发生变化。
# extend()方法不同于"+"方法,因为"+"必须通过赋值语句才能将结果写入新的列表中,而extend()方法可以直接将新的列表添加至原列表之后
#列表的乘法运算是指将列表中的元素重复多遍
#copy() 方法
#列表的切片实现复制
list3 = list1[1:3]
#del 列表名

#字符串与列表之间的转换
name = '小阿丁,小红'
list1 = list(name)
#split()方法是处理字符串的方法,用来根据指定的分隔符拆分字符串,并生成列表
 sentence = 'I want to be split by spcaes.'
 name = '小阿丁,小红'
 sentencelist = sentence.split()
 sentencelist
['I', 'want', 'to', 'be', 'split', 'by', 'spcaes.']
 namelist = name.split(',')
 namelist
['小阿丁', '小红']
# 定义一个字符串列表
str_list = ['Hello', 'World', 'Python', 'is', 'awesome']

# 使用空字符串作为连接符,将列表转换为字符串
result = ''.join(str_list)
# 定义一个字符串列表
str_list = ['Moonshot', 'AI', 'Assistant']

# 初始化一个空字符串
result = ''

# 循环遍历列表,将每个元素添加到字符串中
for item in str_list:
    result += item

# 输出结果
print(result)  # 输出: MoonshotAIAssistant
#字符串的索引与切片
#字符串的处理与操作
'''
len(x)   #返回字符串x的长度
str(x)   #将任意类型的x转化为字符串类型
chr(x)   #返回Unicode编码为x的字符
ord(x)   #返回字符x的Unicode编码
hex(x)   #将整数x转化为十六进制数
oct(x)   #将整数x转化为八进制数
find()   #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中首次出现的位置,若不存在则返回-1
rfind()  #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中最后一次出现的位置,若不存在则返回-1
index()  #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中首次出现的位置,若不存在则抛出异常
rindex() #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中最后一次出现的位置,若不存在则抛出异常
count()  #用来返回一个字符串在另一个字符串中出现的次数,若不存在则返回0
split()    #以指定字符为分隔符,从原字符串的左端开始将其分割为多个字符串,并返回包含分割结果的列表
rsplit()   #以指定字符为分隔符,从原字符串的右端开始将其分割为多个字符串,并返回包含分割结果的列表
partition()    #以指定字符串为分隔符将原字符串分割为3个部分,分隔符之前的字符串,分隔符字符串和分隔符之后的字符串
rpartition()   #以指定字符串为分隔符将原字符串分割为3个部分,分隔符之前的字符串,分隔符字符串和分隔符之后的字符串
join()    #将列表中多个字符串进行连接,并在相邻两个字符串之间插入指定字符,返回新字符串
lower()     #将字符串转换为小写字符串
uppper()    #将字符串转换为大写字符串
capitalize()    #将字符串首字母变为大写
title()         #将字符串中每个单词的首字母都变为大写
swapcase()      #将字符串中的字符大小写互换
replace()      #替换字符串中指定字符或子字符串
strip()         #删除字符串两端空白字符
rstrip()        #删除字符串右端空白字符
lstrip()        #删除字符串左端空白字符
startswith()   #判断字符串是否以指定字符开始
endswith()      #判断字符串是否以指定字符结束
isupper()       #是否全为大写
islower()       #是否全为小写
isdigit()       #是否全为数字
isalnum()       #是否全为字母或汉字或数字
isalpha()       #是否全为字母或汉字
center()         #字符串居中对齐
ljust()          #字符串居左对齐
rjust()          #字符串居右对齐
zfill()          #输出指定宽度,不足的左边填0
format()格式化方法
当使用format()方法格式化字符串的时候,首先需要在"{}"中输入":",然后在":"之后分别设置<填充字符><对齐方式><宽度>
"{:*^20}".format("milke")

#split() 和 join() 方法示例
my_string = "apple, banana, cherry"
splitted_str = my_string.split(", ")
print(splitted_str)  # 输出:['apple', 'banana', 'cherry']
 
fruits = ['apple', 'banana', 'cherry']
joined_str = ", ".join(fruits)
print(joined_str)  # 输出:apple, banana, cherry
#find() 方法示例
my_string = "Hello, World!"
index = my_string.find("World")
if index != -1:
    print(f"Substring found at index: {index}")
else:
    print("Substring not found")
#replace() 方法示例
my_string = "Hello, World!"
new_string = my_string.replace("World", "Python")
print(new_string)  # 输出:Hello, Python!

#count() 方法用于计算字符串中指定子字符串出现的次数
my_string = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
count = my_string.count("wood")
print(f"The word 'wood' appears {count} times in the string.")
#isalpha() 方法用于检查字符串是否只包含字母字符
alpha_str = "Hello"
if alpha_str.isalpha():
    print("The string contains only alphabetic characters.")
else:
    print("The string contains non-alphabetic characters.")
#isdigit() 方法用于检查字符串是否只包含数字字符
digit_str = "12345"
if digit_str.isdigit():
    print("The string contains only digits.")
else:
    print("The string contains non-digit characters.")
#isalnum() 方法用于检查字符串是否只包含字母和数字字符的组合
alnum_str = "Hello123"
if alnum_str.isalnum():
    print("The string contains only alphanumeric characters.")
else:
    print("The string contains non-alphanumeric characters.")


# 多行字符串示例
multiline_string = """Hello,
World!"""
print(multiline_string)
 
# 字符编码转换示例
my_string = "你好"
encoded_string = my_string.encode("utf-8")
decoded_string = encoded_string.decode("utf-8")
print(encoded_string)
print(decoded_string)
# 文本处理示例
text = "Hello, this is a sample text. #example"
cleaned_text = text.replace("#example", "").strip()
print(cleaned_text)
 
# 字符串拼接优化示例
items = ['apple', 'banana', 'cherry']
joined_string = ''.join(items)
print(joined_string)

def reverse_string(input_str):
    reversed_str = ''
    for char in input_str:
        reversed_str = char + reversed_str
    return reversed_str
 
# 测试函数
input_string = "Hello, World!"
reversed_string = reverse_string(input_string)
print(reversed_string)  # 输出结果为:!dlroW ,olleH
'''
相关推荐
架构文摘JGWZ12 分钟前
Java 23 的12 个新特性!!
java·开发语言·学习
FreakStudio13 分钟前
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
python·嵌入式·面向对象·电子diy
leon62513 分钟前
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
开发语言·算法·matlab
锦亦之22331 小时前
QT+OSG+OSG-earth如何在窗口显示一个地球
开发语言·qt
我是苏苏1 小时前
Web开发:ABP框架2——入门级别的增删改查Demo
java·开发语言
姜太公钓鲸2331 小时前
c++ static(详解)
开发语言·c++
菜菜想进步1 小时前
内存管理(C++版)
c语言·开发语言·c++
2301_789985941 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
知星小度S1 小时前
C语言——自定义类型
c语言·开发语言
redcocal1 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘