Python源文件改写:
## 编写一个程序,读取一个python源程序文件,将文件中所有除保留字之外的小写字母换成字母,并且生成文件要能够被Python解释器正确执行。 ##
以下给出程序:
# -*- coding :utf-8 -*-
import keyword
f = open('test.py')
content = f.read()
f.close()
table = ['range','print','list','set','keyword','kwlist','end']
fs = '' #用于存储改变后的内容
temp = '' #临时字符串,用于判断和处理
for ch in content:
if ch.isalpha(): #如果是字母,则加到temp后面,用于后面处理
temp +=ch
else: #如果不是字母,表示一个连续的字母构成的字符串结束,此时ch非字母
if (not keyword.iskeyword(temp)) and (temp not in table): #如果不是保留字和内置方法,将其变成大写
temp = temp.upper()
fs+=temp #将temp添加到fs
fs+=ch #添加 非字母ch 注意不能和 fs+=temp 位置颠倒
temp = '' #清空临时字符串,用于下次使用
f = open('test','w')
f.write(fs)
f.close()
这里我们首先需要导入keyword模块,因为根据题目的意思,我们不能改写保留字母,使用kwlist就可以列举出所有的保留字母(注意返回的是一个list),同时也可以用iskeyword判断是不是一个保留字
注意:table 列表是除了保留字之外的关键字,如果要使用某些模块的某些方法,就应该把相应的关键字写到table里,不然改变后的源程序就不能被Python解释器执行。
测试如下:
初始的程序及结果:
改变后的程序及结果: