Python编程快速上手——让繁琐工作自动化第八章实践题

本文介绍了一系列实用的Python脚本,包括剪贴板管理、填词游戏和文本筛选功能。通过使用shelve模块存储剪贴板内容,利用正则表达式进行填词游戏,以及在指定目录下按正则表达式筛选文本。

##8.9.1

import shelve, pyperclip, sys

mcbShelf = shelve.open('mcb')
if len(sys.argv) == 3:
    if sys.argv[1].lower() == 'save':
        mcbShelf[sys.argv[2]] = pyperclip.paste()
    elif sys.argv[1].lower() == 'delete':
        del mcbShelf[sys.argv[2]]

elif len(sys.argv) == 2:
    if sys.argv[1].lower() == 'list':
        pyperclip.copy(str(list(mcbShelf.keys())))
    if sys.argv[1].lower() == 'delete':
        del mcbShelf[:]
    else:
        pyperclip.copy(mcbShelf[sys.argv[1]])
mcbShelf.close()

##8.9.2

import re, os

print('欢迎进入《疯狂填词》游戏')
lujing = input('请输入本次游戏文件路径(例如:C:\\Users\\lucky\\biancheng\\tianci.txt):\n')

while os.path.isfile(lujing) == False:
    lujing = input('输入信息有误,请重新输入:\n')

wenjian_open = open(lujing)
wenjian_read = wenjian_open.read()
wenjian_open.close()

zhengze1 = re.compile(r'[A-Z]{2,}')
xutihuan = zhengze1.findall(wenjian_read)

for i in xutihuan:
    if i[0] == 'A':
        tianci = input('Enter an ' + i + ':\n' )
        while tianci.isalnum() == False:
            tianci = input('填词不可为空:\n')
    else:
        tianci = input('Enter a ' + i + ':\n' )
        while tianci.isalnum() == False:
            tianci = input('填词不可为空:\n')
    zhengze2 = re.compile(r''+i+'')
    wenjian_read = zhengze2.sub(tianci, wenjian_read)

print(wenjian_read)
wenjian_new = re.compile(r'[A-Za-z0-9]+\.txt').search(lujing).group().rstrip('.txt')+ '_new.txt'
open(wenjian_new, 'w').write(wenjian_read)

##8.9.3

import re, os

lujing = input('请输入目录路径:')
while os.path.isdir(lujing) == False:
    lujing = input('路径无效,请重新输入:')

wenjian_list = os.listdir(lujing)
shaixuan = input('请输入本次筛选的正则表达式: \\')
for a in wenjian_list:
    wenjian_txt = re.compile(r'.+\.txt').search(a)
    if wenjian_txt == None:
        continue
    else:
        wenjian_txt_open = open(os.path.join(lujing,wenjian_txt.group())).read()
        shaixuan_txt = re.compile(r'\%s' %shaixuan).findall(wenjian_txt_open)
        print('\n'.join(shaixuan_txt))

PS:在8.9.3代码中,只能在用户输入的正则表达式是可读取的情况下运行,否则程序将报错,暂无法解决,待后续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值