Introduction
项目功能说明:
1、利用正则表达式,替换在同目录中已经给出的java.txt文本中对应的内容。
2、判断邮箱格式是否正确
安装流程
下载python运行环境
安装python运行环境(解释器):
可用教程: 超详细的Python安装和环境搭建
推荐安装Python3.9或以上版本
下载项目文件
在ftp下载对应压缩包
依赖库安装
打开cmd,切换命令行到本工程所在目录:
cd clstmeSystem
执行以下命令安装依赖:
python -m pip install -U pip
pip install -r requirements.txt
运行程序
直接点击main.py文件执行,或者进入在cmd中输入
python main.py
使用手册
1、主页面
2、替换文本内容
注:
1、必须先在程序同目录下建好java.txt文本文件!且确保同目录下没有test.txt文件!
2、逐行查找文本内容。若没有找到对应的替换函数,则报错,不做修改直接将本行写入结果文件,并继续执行程序。
3、test.txt的生成方式是追加写入,所以如果多次执行该功能,会直接在test.txr文件后增加内容。
3、判断邮箱格式
看代码吧
4、java.txt文本文件内容:
class StringExample
{
public static void main(String args[ ])
{
String s1=new String("you are a student"),
s2=new String("how are you");
if (【代码1】) // 判断s1与s2是否相同
{
System.out.println("s1与s2相同");
}
else
{
System.out.println("s1与s2不相同");
}
String s3=new String("22030219851022024");
if (【代码2】) // 判断s3的前缀是否是“220302”
{
System.out.println("吉林省的身份证");
}
String s4=new String("你"),
s5=new String("我");
if(【代码3】) // s4大于s5
{
System.out.println("s4大于s5");
}
else
{
System.out.println("s4小于s5");
}
int position=0;
String path="c:\\java\\jsp\\A.java";
position=【代码4】 // 获取path中最后出现目录分隔符号的位置
System.out.println("c:\\java\\jsp\\A.java中最后出现\\的位置:"+position);
String fileName=【代码5】 // 获取path中“A.java”子字符串
System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+fileName);
String s6=new String("100"),
s7=new String("123.678");
int n1=【代码6】 // 将s6转化成int型数据
double n2=【代码7】 // 将s7转化成double型数据
double n=n1+n2;
System.out.println(n);
String s8=new String("ABCDEF");
char a[ ]=【代码8】 // 将s8存放到数组a中
for(int i=a.length-1;i>=0;i--)
{
【代码9】// 打印 a[I]
}
}
}
5、代码内容:
import re
import time
def func1(line, r):
res = line[:r.span()[0]] + 's1 == s2' + line[(r.span()[1]):]
return res
def func2(line, r):
res = line[:r.span()[0]] + 's3.startsWith("220302")' + line[(r.span()[1]):]
return res
def func3(line, r):
res = line[:r.span()[0]] + 's4 > s5' + line[(r.span()[1]):]
return res
def func4(line, r):
res = line[:r.span()[0]] + 'path.lastIndexOf ("\\\\");' + line[(r.span()[1]):]
return res
def func5(line, r):
res = line[:r.span()[0]] + 'path.intern();' + line[(r.span()[1]):]
return res
def func6(line, r):
res = line[:r.span()[0]] + 'Integer.parseInt(s6);' + line[(r.span()[1]):]
return res
def func7(line, r):
res = line[:r.span()[0]] + 'Double.parseDouble(s7);' + line[(r.span()[1]):]
return res
def func8(line, r):
res = line[:r.span()[0]] + 's8.toCharArray();' + line[(r.span()[1]):]
return res
def func9(line, r):
res = line[:r.span()[0]] + 'System.out.println(a[i]);' + line[(r.span()[1]):]
return res
def changes():
f = open('java.txt', 'r',encoding='utf-8')
lines = f.readlines()
f.close()
newfile = open('test.txt', 'a', encoding='utf-8')
for line in lines:
#逐行读取txt文件
#line = line.strip()#去除换行符,但有可能是\r或\r\n
r = re.search('【代码(\w*)】', line) #逐行找需要替换的代码块
#找到了
if r is not None:
rz = re.search('\d+\.?\d*', r.group()) #找他是第几个代码块
func = "func" + rz.group() + "(line, r)" #拼接对应函数字符串
#试执行对应函数
try:
resLine = eval(func)
newfile.write(resLine + '\n')
#若出错。
except:
print("没有第" + rz.group() + "代码块!请检查文本或新写函数!")
newfile.write(line)
else:
newfile.write(line)
newfile.close()
print("退出程序后即会在本目录下保存生成新文件test.txt")
return
def judge():
str=r'^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$'
print("请输入邮箱:")
ins = input()
if re.match(str,ins):
print('匹配')
else:
print('不匹配')
return
def main():
while(1):
print("*****************")
print("请输入对应操作数字:")
print("0:退出")
print("1:替换模板")
print("2:检查邮箱格式")
print("*****************")
a = input()
if(a == "0"):break
elif(a == "1"):
changes()
elif(a == "2"):
judge()
else:print("输入错误,请重新输入!")
time.sleep(1.5)
main()