很简单。

python本身有个抽象语法树库专门解析源码。加上astor库导出到文件就可以。(如果你想用正则来解析,那就非常复杂了。所以建议来采取我的方法)

我们先思考要怎么都替换到大写字母而不影响数字和下划线?除了正则有什么办法区分呢?

把它们都转换为ascii十进制来判断,a为最小97,z为最大122。例如:

raw_str="test_1"

str_to_ascii=[chr(ord(single_str)-32) if 122>=ord(single_str)>=97 else single_str for single_str in raw_str ]

print(''.join(str_to_ascii))

输出结果

TEST_1

接着我们再来解析python源码中的变量

先安装astor库

pip install astor -i https://mirrors.aliyun.com/pypi/simple/

源文件内容

def nnn():

test_info=test

test='"asd"'

split=3

print(test.split("a"))

for every_str in ["""adddd""",test,'asd',"'asd'"]:

print(every_str)

解析脚本(这里我替换的是test,split这两个变量)

#-*- coding:utf-8 -*-

import ast

import astor

class hack_code(ast.NodeVisitor):

def visit_Name(self, node):

if node.id=="test":

node.id ="TEST"

elif node.id=="split":

node.id ="SPLIT"

return node

if __name__ == '__main__':

with open("test_file.py","r") as rd_options:

file_content=rd_options.read()

p=ast.parse(file_content)

v=hack_code()

v.visit(p)

print(astor.to_source(p))

输出结果

def nnn():

test_info = TEST

TEST = '"asd"'

SPLIT = 3

print(TEST.split("a"))

for every_str in ['adddd', TEST, 'asd', "'asd'"]:

print(every_str)

那么最后将两个脚本合并成完整的一个脚本,就是下面这样(需要注意的是你需要排除内置函数)

#-*- coding:utf-8 -*-

import ast

import astor

class hack_code(ast.NodeVisitor):

def visit_Name(self, node):

exclude_list=["abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes",

"callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate",

"eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash",

"help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map",

"max","memoryview","min","next","object","oct","open","ord","pow","print","property","range",

"repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super",

"tuple","type","vars","zip","__import__"]

if not node.id in exclude_list:

node.id=''.join([chr(ord(single_str)-32) if 122>=ord(single_str)>=97 else single_str for single_str in node.id])

return node

if __name__ == '__main__':

with open("test_file.py","r") as rd_options:

file_content=rd_options.read()

p=ast.parse(file_content)

v=hack_code()

v.visit(p)

print(astor.to_source(p))

把所有内置函数搞下,累死我了。最后输出结果

def nnn():

TEST_INFO = TEST

TEST = '"asd"'

SPLIT = 3

print(TEST.split('a'))

for EVERY_STR in ['adddd', TEST, 'asd', "'asd'"]:

print(EVERY_STR)

python数字转大写字母_python变量名称如何转化为大写字母?相关推荐

  1. python数字和运算符空格_Python基础——运算符与数据结构(200315)

    <34> rpartition():       --根据指定字符对字符串进行分割,保留指定字符,从右边开始,只分三份 <35>split('对象','个数'):      - ...

  2. python 数字运算及格式化_Python基础教程(3)Python数据类型、运算与格式化

    一.Python的数据类型 主要分为了数字型和非数字型两个大类,其中数字型又包含整形(int).浮点型(float).布尔型(bool),而非数字分为字符串(str).列表(list).元组(tupl ...

  3. python中小写字母和数字用什么表示_Python变量名可以由数字、大、小写英文字母和 下划线组成。...

    包装别标标志险性应在有主种危次两上分,变量那么在运质时类物输此,危险危险性货物一种主要既有如果. 不得惯溜放.名可母和摔,卸货气瓶时. 排除可以及时静电,数字到安目的以达全运输的,带中的金地面橡胶拖地 ...

  4. python数字类型分为三类_Python | 数据类型

    Python让Python成为语言研究的利器Xu & YangPhoneticSan学习参考 Python for Linguists Natural Language Processing ...

  5. python数字类型及运算_Python基础之(基本数据类型及运算)

    一.运算 1.1.算数运算 1.2.比较运算: 1.3.赋值运算: 1.4.逻辑运算: 1.5.成员运算: 针对逻辑运算的进一步研究: 1.在没有()的情况下not 优先级高于 and,and优先级高 ...

  6. python数字类型及运算_Python基础教程:运算符以及数据类型解析

    运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(数字) Python3中支持int.float.bool.complex. 使用内置的 ...

  7. python数字求和菜鸟教程_Python Number(数字) | 菜鸟教程

    Python Number(数字) Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量赋值 ...

  8. python数字类型及运算_Python类型和运算--数字

    在Python中,数字并不是一个真正的对象类型,而是一组相似类型的分类.不仅包括通常的数字类型(整数和浮点数),黑包括数字表达式,以及高级的数字编程. 基本数字常量 数字 常量 1234, -24 整 ...

  9. python数字转中文字符_Python实现中文数字转换为阿拉伯数字的方法示例

    本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法.分享给大家供大家参考,具体如下: 一.需求 今天写了三千二百行代码. 今天写了3200行代码. 两行意思相同,只是表达方式不太能够,统一掉 ...

最新文章

  1. 1小时学会:最简单的iOS直播推流(二)代码架构概述
  2. linux硬盘拷贝系统,教你在第二块硬盘上拷贝安装Linux系统
  3. c语言一行代码太长,C语言修改一行代码,运行效率居然提升数倍,这个技巧你知道吗...
  4. LeetCode-数组-189. 旋转数组
  5. 布隆过滤器避免redis缓存穿透
  6. 锁屏界面显示某些设置已隐藏_iOS 14 隐藏功能,只要轻点手机背面就能截屏
  7. 【TensorFlow】 基于视频时序LSTM的行为动作识别
  8. Cell子刊主编:文章被编辑拒稿,主要是这4大原因
  9. Python程序中各函数间调用关系分析与可视化
  10. 2.4变动和最终变量(Volatile and Final Variables)
  11. STM32_WS2811驱动
  12. 小程序的好处是什么?
  13. 鹰式价差matlab,期权价差
  14. java cmyk和rgb的转换_CMYK与RGB相互转换(java)
  15. 广义速度V与管理理论——流水线、TPS…
  16. 聚沙成塔--爬虫系列(四)(爬取糗事百科段子)
  17. 系统设计之时间维度[数据仓库]
  18. SNARK性能及安全——Verifier篇
  19. 42. 注入篇——Havij、Pangolin使用
  20. 如何获取dgv中所显示的全部数据

热门文章

  1. 终朝睡在鸿蒙窍,南怀瑾老师:话头——答叔、珍两位质疑的信
  2. 深度学习篇之数据集划分方法-附代码python详细注释
  3. postgresql windows下修改帐号密码 (图文)
  4. java.sql.SQLException: ORA-00918: 未明确定义列ORA-00918
  5. java中接口可不可以继承一般类,为什么?
  6. 浅谈 ext2 文件系统的特点、优缺点以及使用场景
  7. java输出GPA_使用ENUM和switch case的循环Java GPA计算器
  8. python色卡_python plt 色卡
  9. 戴尔win10重新安装win7系统
  10. ceph pg不一致问题