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

打印 上一主题 下一主题

主题 510|帖子 510|积分 1530

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

eval 执行表达式
exec 执行语句
字符串←变量名
globals 全局变量
locals 局部变量
vars 类的成员
  1. i = 0
  2. exec('j = 0')
  3. print(globals())
复制代码
  1. class Dummy(object):
  2.     def __init__(self) -> None:
  3.         self.i = 0
  4.         exec('self.j = 0')
  5. dummy = Dummy()
  6. print(vars(dummy))
复制代码
  1. class EasyArgs(object):
  2.     def __init__(self, **kvps):
  3.         self.add(**kvps)
  4.     def add(self, **kvps):           # 函数参数名转化成字符串(字典的键)
  5.         for k,v in kvps.items():
  6.             exec(f'self.{k} = None') # 字符串转化成示例的成员变量名
  7.             vars(self)[k] = v
  8. if __name__ == '__main__':
  9.     args = EasyArgs(batch_size = 32)
  10.     args.add(epochs = 64)
  11.     print(vars(args))                # 成员变量名转化成字符串
  12.     print(args.batch_size)           # 直接根据成员变量名使用变量
  13.     print(args.epochs)
复制代码
  1. #exec 会把字符串两边的引号去掉
  2. info_dict = {'create_time':'ct','user_id':'uid', 'cookie_id':'ci', 'product_name':'pn', 'product_version':'pv', 'device':'di'}
  3. for i in info_dict.items():
  4. exec(i[0] + "='%s'" % i[1])
  5. 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()

  1. a='pp   '
  2. a.rstrip()
  3. print(a)
  4. #字符串中添加制表符可以使用字符组合\t
  5. print("\tppp")
  6. 字符串中添加换行,可以使用换行符\n
  7. print("\tppp\n")
  8. 同时包含制表符和换行符,字符串 \n\t
  9. print("\tppp\n")
  10. name = "Ada Lovelace"
  11. print(name.upper())
  12. print(name.lower())
复制代码
Python-python逼迫转换成字符串

  1. a = 123
  2. b = str(a)
  3. print(b, type(b))  # '123', <class 'str'>
  4. a = 123
  5. b = repr(a)
  6. print(b, type(b))  # '123', <class 'str'>
  7. a = '中文'
  8. b = unicode(a, 'utf-8')
  9. print(b, type(b))  # u'\u4e2d\u6587', <class 'unicode'>
复制代码
  1. def namestr(obj, namespace):
  2.     return [name for name in namespace if namespace[name] is obj]
  3. print(namestr(lr_origin,globals()),'\n',
  4. namestr(lr_origin,globals())[0])
  5. import inspect, re
  6. def varname(p):
  7.   for line in inspect.getframeinfo(inspect.currentframe().f_back)[3]:
  8.     m = re.search(r'\bvarname\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)', line)
  9.     if m:
  10.       return m.group(1)
  11. varname(lr_origin)
复制代码
Python怎样创建字典

  1. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  2. print(scores_dict)
  3. #访问字典的值
  4. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  5. print(scores_dict['语文'])        # 通过键“语文”获取对应的值
  6. #添加键值对
  7. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  8. scores_dict['物理'] = 97    # 添加 ‘物理’:  97
  9. print(scores_dict)  # {'语文': 105, '数学': 140, '英语': 120, '物理': 97}
  10. #删除键值对
  11. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  12. del scores_dict['数学']   # 删除 ’语文‘: 105
  13. print(scores_dict)      # 输出 {'语文': 105, '英语': 120}
  14. #修改字典值
  15. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  16. scores_dict['数学'] = 120  # 修改将“数学”修改为120
  17. print(scores_dict)      # 输出 {'语文': 105, '数学': 120, '英语': 120}
  18. 判断键值对是否存在
  19. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  20. # 判断scores_dict是否包含名为'语文'的key
  21. print('语文' in scores_dict)          # True
  22. # 判断scores_dict不包含'历史'的key
  23. print('历史' not in scores_dict)      # True
  24. #clear()方法
  25. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  26. print(scores_dict)  # 输出 {'语文': 105, '数学': 140, '英语': 120}
  27. scores_dict.clear()     # 删除字典所有内容
  28. print(scores_dict)      # 输出{}
  29. #get()方法
  30. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  31. print(scores_dict.get('历史'))    # 输出 None
  32. print(scores_dict['历史'])      # 报错 KeyError: '历史'
  33. #update()方法
  34. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  35. scores_dict.update({'语文': 120, '数学': 110})
  36. print(scores_dict)      # 输出{'语文': 120, '数学': 110, '英语': 120}
  37. #items()方法
  38. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  39. print(scores_dict.items())  # 输出 dict_items([('语文', 105), ('数学', 140), ('英语', 120)])
  40. #keys()方法
  41. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  42. print(scores_dict.keys())  # 输出 dict_keys(['语文', '数学', '英语'])
  43. #values()方法
  44. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  45. print(scores_dict.values())  # 输出 dict_values([105, 140, 120])
  46. #pop()方法
  47. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  48. scores_dict.pop('英语')   # 删除'英语'的键和值
  49. print(scores_dict)  # 输出{'语文': 105, '数学': 140}
  50. #popitem()方法
  51. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  52. print(scores_dict.popitem())  # 输出('英语', 120)
  53. #setdefault()方法
  54. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  55. # 设置'语文'默认值为100
  56. scores_dict.setdefault('语文', 100)
  57. print(scores_dict)          # 输出{'语文': 105, '数学': 140, '英语': 120}
  58. # 设置'历史'默认值为140
  59. scores_dict.setdefault('历史', 140)
  60. print(scores_dict)          # 输出{'语文': 105, '数学': 140, '英语': 120, '历史': 140}
  61. #fromkeys()方法
  62. scores_dict = dict.fromkeys(['语文', '数学'])
  63. print(scores_dict)  # 输出{'语文': None, '数学': None}
  64. scores_dict = dict.fromkeys(('语文', '数学'))
  65. print(scores_dict)  # 输出{'语文': None, '数学': None}
  66. # 使用元组创建包含2个key的字典,指定默认的value
  67. scores_dict = dict.fromkeys(('语文', '数学'), 100)
  68. print(scores_dict)  # 输出{'语文': 100, '数学': 100}
  69. #len()方法
  70. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  71. print(len(scores_dict))  # 输出 3
  72. #str()方法
  73. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  74. print(str(scores_dict))  # 输出{'语文': 105, '数学': 140, '英语': 120}
  75. #type()方法
  76. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  77. print(type(scores_dict))  # 输出<class 'dict'>
  78. #Python字典的for循环遍历
  79. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  80. for key in scores_dict:
  81. print(key)
  82. #遍历value的值
  83. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  84. for value in scores_dict.values():
  85.     print(value)
  86. #遍历字典键值对
  87. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  88. for key in scores_dict:
  89. print(key + ":" + str(scores_dict[key]))    # 返回字符串
  90. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  91. for i in scores_dict.items():
  92. print(i)    # 返回元组
  93. scores_dict = {'语文': 105, '数学': 140, '英语': 120}
  94. for key, value in scores_dict.items():
  95.     print(key + ':' + str(value))
  96. #将两个列表组成一个字典
  97. list_a = ['zhangsan', 'lisi', 'wangwu']
  98. list_b = ['14', '42', '23']
  99. dicts = dict(zip(list_a, list_b))
  100. print(type(dicts))
  101. print(dicts)
  102. # 输出结果
  103. >>> <class 'dict'>
  104.     {'zhangsan': '14', 'lisi': '42', 'wangwu': '23'}
  105. #将元组转换为列表
  106. # 定义元组
  107. GFG_tuple = (1, 2, 3)
  108. # 将元组转换为列表
  109. GFG_list = list(GFG_tuple)
  110. print(GFG_list)
  111. #使用 map() 函数将元组转换为列表
  112. # 定义元组
  113. GFG_tuple = (1, 2, 3)
  114. # 使用 map 函数将元组转换为列表
  115. GFG_list = list(map(lambda x: x, GFG_tuple))
  116. print(GFG_list)
  117. #把列表转成元组 使用tuple
  118. list_a = [1, 2, 3, 4, 5, 6]
  119. list_b = tuple(list_a)
  120. print(list_b)
  121. #列表的基本操作
  122. #修改元素: 列表名【索引】= 新值
  123. #增加元素 append()方法
  124. #insert()方法
  125. guests = ['张三','李四','王五','小阿丁']
  126. guests.insert(0,'小红')
  127. #注意:列表每次增加的元素可以是任何类型的
  128. #删除元素:del命令
  129. del guests[0]
  130. #pop()方法默认删除最后一个元素
  131. guests=['张三', '李四', '王五', '小阿丁']
  132. guests.pop(1)
  133. #remove()方法
  134. guests.remove('李四')
  135. '''
  136. len()           #统计和返回指定列表的长度
  137. in()   not in()       #判断指定元素是否在列表中
  138. index()         #在列表中那个查找指定的元素,若存在则返回指定元素在列表中的索引,若存在多个则返回最小的,若不存在会报错
  139. count()         #统计并返回列表中指定元素的个数
  140. sort()           #列表元素从小到大升序排序,改变了源列表的元素的顺序
  141. sorted()         #列表元素从小到大升序排序,生成排序后的副本,不改变原列表的顺序
  142. nums.sort()
  143. nums.sort(reverse = True)
  144. '''
  145. #列表的扩充 “+”运算可以将两个列表“加”起来,生成一个新的列表,但是原来的列表并没有发生变化。
  146. # extend()方法不同于“+”方法,因为“+”必须通过赋值语句才能将结果写入新的列表中,而extend()方法可以直接将新的列表添加至原列表之后
  147. #列表的乘法运算是指将列表中的元素重复多遍
  148. #copy() 方法
  149. #列表的切片实现复制
  150. list3 = list1[1:3]
  151. #del 列表名
  152. #字符串与列表之间的转换
  153. name = '小阿丁,小红'
  154. list1 = list(name)
  155. #split()方法是处理字符串的方法,用来根据指定的分隔符拆分字符串,并生成列表
  156. sentence = 'I want to be split by spcaes.'
  157. name = '小阿丁,小红'
  158. sentencelist = sentence.split()
  159. sentencelist
  160. ['I', 'want', 'to', 'be', 'split', 'by', 'spcaes.']
  161. namelist = name.split(',')
  162. namelist
  163. ['小阿丁', '小红']
  164. # 定义一个字符串列表
  165. str_list = ['Hello', 'World', 'Python', 'is', 'awesome']
  166. # 使用空字符串作为连接符,将列表转换为字符串
  167. result = ''.join(str_list)
  168. # 定义一个字符串列表
  169. str_list = ['Moonshot', 'AI', 'Assistant']
  170. # 初始化一个空字符串
  171. result = ''
  172. # 循环遍历列表,将每个元素添加到字符串中
  173. for item in str_list:
  174.     result += item
  175. # 输出结果
  176. print(result)  # 输出: MoonshotAIAssistant
  177. #字符串的索引与切片
  178. #字符串的处理与操作
  179. '''
  180. len(x)   #返回字符串x的长度
  181. str(x)   #将任意类型的x转化为字符串类型
  182. chr(x)   #返回Unicode编码为x的字符
  183. ord(x)   #返回字符x的Unicode编码
  184. hex(x)   #将整数x转化为十六进制数
  185. oct(x)   #将整数x转化为八进制数
  186. find()   #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中首次出现的位置,若不存在则返回-1
  187. rfind()  #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中最后一次出现的位置,若不存在则返回-1
  188. index()  #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中首次出现的位置,若不存在则抛出异常
  189. rindex() #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中最后一次出现的位置,若不存在则抛出异常
  190. count()  #用来返回一个字符串在另一个字符串中出现的次数,若不存在则返回0
  191. split()    #以指定字符为分隔符,从原字符串的左端开始将其分割为多个字符串,并返回包含分割结果的列表
  192. rsplit()   #以指定字符为分隔符,从原字符串的右端开始将其分割为多个字符串,并返回包含分割结果的列表
  193. partition()    #以指定字符串为分隔符将原字符串分割为3个部分,分隔符之前的字符串,分隔符字符串和分隔符之后的字符串
  194. rpartition()   #以指定字符串为分隔符将原字符串分割为3个部分,分隔符之前的字符串,分隔符字符串和分隔符之后的字符串
  195. join()    #将列表中多个字符串进行连接,并在相邻两个字符串之间插入指定字符,返回新字符串
  196. lower()     #将字符串转换为小写字符串
  197. uppper()    #将字符串转换为大写字符串
  198. capitalize()    #将字符串首字母变为大写
  199. title()         #将字符串中每个单词的首字母都变为大写
  200. swapcase()      #将字符串中的字符大小写互换
  201. replace()      #替换字符串中指定字符或子字符串
  202. strip()         #删除字符串两端空白字符
  203. rstrip()        #删除字符串右端空白字符
  204. lstrip()        #删除字符串左端空白字符
  205. startswith()   #判断字符串是否以指定字符开始
  206. endswith()      #判断字符串是否以指定字符结束
  207. isupper()       #是否全为大写
  208. islower()       #是否全为小写
  209. isdigit()       #是否全为数字
  210. isalnum()       #是否全为字母或汉字或数字
  211. isalpha()       #是否全为字母或汉字
  212. center()         #字符串居中对齐
  213. ljust()          #字符串居左对齐
  214. rjust()          #字符串居右对齐
  215. zfill()          #输出指定宽度,不足的左边填0
  216. format()格式化方法
  217. 当使用format()方法格式化字符串的时候,首先需要在"{}”中输入“:”,然后在":"之后分别设置<填充字符><对齐方式><宽度>
  218. "{:*^20}".format("milke")
  219. #split() 和 join() 方法示例
  220. my_string = "apple, banana, cherry"
  221. splitted_str = my_string.split(", ")
  222. print(splitted_str)  # 输出:['apple', 'banana', 'cherry']
  223. fruits = ['apple', 'banana', 'cherry']
  224. joined_str = ", ".join(fruits)
  225. print(joined_str)  # 输出:apple, banana, cherry
  226. #find() 方法示例
  227. my_string = "Hello, World!"
  228. index = my_string.find("World")
  229. if index != -1:
  230.     print(f"Substring found at index: {index}")
  231. else:
  232.     print("Substring not found")
  233. #replace() 方法示例
  234. my_string = "Hello, World!"
  235. new_string = my_string.replace("World", "Python")
  236. print(new_string)  # 输出:Hello, Python!
  237. #count() 方法用于计算字符串中指定子字符串出现的次数
  238. my_string = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
  239. count = my_string.count("wood")
  240. print(f"The word 'wood' appears {count} times in the string.")
  241. #isalpha() 方法用于检查字符串是否只包含字母字符
  242. alpha_str = "Hello"
  243. if alpha_str.isalpha():
  244.     print("The string contains only alphabetic characters.")
  245. else:
  246.     print("The string contains non-alphabetic characters.")
  247. #isdigit() 方法用于检查字符串是否只包含数字字符
  248. digit_str = "12345"
  249. if digit_str.isdigit():
  250.     print("The string contains only digits.")
  251. else:
  252.     print("The string contains non-digit characters.")
  253. #isalnum() 方法用于检查字符串是否只包含字母和数字字符的组合
  254. alnum_str = "Hello123"
  255. if alnum_str.isalnum():
  256.     print("The string contains only alphanumeric characters.")
  257. else:
  258.     print("The string contains non-alphanumeric characters.")
  259. # 多行字符串示例
  260. multiline_string = """Hello,
  261. World!"""
  262. print(multiline_string)
  263. # 字符编码转换示例
  264. my_string = "你好"
  265. encoded_string = my_string.encode("utf-8")
  266. decoded_string = encoded_string.decode("utf-8")
  267. print(encoded_string)
  268. print(decoded_string)
  269. # 文本处理示例
  270. text = "Hello, this is a sample text. #example"
  271. cleaned_text = text.replace("#example", "").strip()
  272. print(cleaned_text)
  273. # 字符串拼接优化示例
  274. items = ['apple', 'banana', 'cherry']
  275. joined_string = ''.join(items)
  276. print(joined_string)
  277. def reverse_string(input_str):
  278.     reversed_str = ''
  279.     for char in input_str:
  280.         reversed_str = char + reversed_str
  281.     return reversed_str
  282. # 测试函数
  283. input_string = "Hello, World!"
  284. reversed_string = reverse_string(input_string)
  285. print(reversed_string)  # 输出结果为:!dlroW ,olleH
  286. '''
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表