宝塔山 发表于 2024-8-5 01:55:03

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

locals是python的内置函数,他可以以字典的方式去访问局部和全局变量
vars()本函数是实现返回对象object的属性和属性值的字典对象
eval()将字符串str当成有效的表达式来求值并返回盘算结果
#!/usr/bin/python3
#-*- coding = uft-8 -*-
guo = 666
str1 = "guo"
str2 = "__doc__"
class c:
    a = 100
print("第一种方法:", locals())
#flag = locals()

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

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

字符串→变量名

eval 执行表达式
exec 执行语句
字符串←变量名
globals 全局变量
locals 局部变量
vars 类的成员
i = 0
exec('j = 0')
print(globals())

class Dummy(object):
    def __init__(self) -> None:
      self.i = 0
      exec('self.j = 0')

dummy = Dummy()
print(vars(dummy))

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) = v

if __name__ == '__main__':
    args = EasyArgs(batch_size = 32)
    args.add(epochs = 64)
    print(vars(args))                # 成员变量名转化成字符串
    print(args.batch_size)         # 直接根据成员变量名使用变量
    print(args.epochs)

#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 + "='%s'" % i)

print create_time #这里在打印时create_time必须全部写,不会提示。
编号函数描述

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

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逼迫转换成字符串

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'>
def namestr(obj, namespace):
    return is obj]
print(namestr(lr_origin,globals()),'\n',
namestr(lr_origin,globals()))

import inspect, re
def varname(p):
for line in inspect.getframeinfo(inspect.currentframe().f_back):
    m = re.search(r'\bvarname\s*\(\s*(*)\s*\)', line)
    if m:
      return m.group(1)
varname(lr_origin)


Python怎样创建字典

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()
#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))    # 返回字符串
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 =
list_b = tuple(list_a)
print(list_b)
#列表的基本操作
#修改元素: 列表名【索引】= 新值
#增加元素 append()方法
#insert()方法
guests = ['张三','李四','王五','小阿丁']
guests.insert(0,'小红')
#注意:列表每次增加的元素可以是任何类型的
#删除元素:del命令
del guests
#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
#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
'''




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: python字符串与变量名互相转换,字典,list操作