本文来源吾爱破解论坛
这是处理前后的对比 前面是提取的序号 后面是测试的标题例子
因为刚接触两天所以代码没有格式
变量也特别乱 ,顺便问问大神们有没有更好的写法
可以指点一下
"D:\Program Files\py36\python.exe" D:/源码/练手.py
144 144以退为进.txt
145 145你们是找我的?.txt
163 163去找狐狸.txt
1 1第一章狐狸急了会咬人.txt
126 一二六章妙儿被打伤.txt
111 一百一十一章撸猫.txt
128 一百二十八你后悔了?.txt
214 二一四-终极目标.txt
23 二十三章逃婚.txt
2105 二千一百零五-谈个交易.txt
435 四三五小狐狸醒了.txt
114 第一白一十四不想回去.txt
100 第一百章要不要动手.txt
103 第一百零三章将他杀了即可.txt
31 第三十一章不懂女人.txt
35 第三十五章活在当下.txt
34 第三十四章道歉.txt
30 第三十章刻薄.txt
3 第三章培养感情的套路.txt
90 第九十章失去灵力.txt
9 第九章迟早会走的.txt
2101 第二千一百零一章-地头蛇潘哥.txt
41 第四十一章找到小狐狸.txt
47 第四十七章当面变身.txt
45 第四十五章退婚.txt
44 第四十四章把它送走.txt
Process finished with exit code 0
[Python] 纯文本查看 复制代码import os, requests, time, tkinter.messagebox, json
from bs4 import BeautifulSoup
from tkinter import *
# 判断是否为数字
def is_number(s):
try:
float(s)
return True
except ValueError:
pass
try:
import unicodedata
unicodedata.numeric(s)
return True
except (TypeError, ValueError):
pass
return False # 判断是否为数字
CN_UNIT = {
'十': 10,
'拾': 10,
'百': 100,
'佰': 100,
'白': 100,
'千': 1000,
'前': 1000,
'仟': 1000,
'钱': 1000,
'万': 10000,
'萬': 10000,
'亿': 100000000,
'億': 100000000,
'兆': 1000000000000,
}
CN_NUM = {
'〇': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9, '零': 0, '令': 0,
'壹': 1, '贰': 2, '叁': 3, '肆': 4, '伍': 5, '陆': 6, '柒': 7, '捌': 8, '玖': 9, '貮': 2, '两': 2,
}
CN_NUMS = {
'〇': '0', '一': '1', '二': '2', '三': '3', '四': '4', '五': '5', '六': '6', '七': '7', '八': '8',
'九': '9', '零': '0', '令': '0', '壹': '1', '贰': '2', '叁': '3', '肆': '4',
'伍': '5', '陆': '6', '柒': '7', '捌': '8', '玖': '9', '貮': '2', '两': '2'
}
def chinese_123(cn: str) -> str:
# print(cn)
a = []
for cndig in cn:
a.append(CN_NUMS.get(cndig)) # 从集合里找到要替换的字并且返回,加入到字典里
y = ''.join(a) # 重新组合
return y
# 章节大写转小写
def chinese_to_arabic(cn: str) -> int:
'''
CN_UNIT = {
'十': 10,
'拾': 10,
'百': 100,
'佰': 100,
'白': 100,
'千': 1000,
'前': 1000,
'仟': 1000,
'钱': 1000,
'万': 10000,
'萬': 10000,
'亿': 100000000,
'億': 100000000,
'兆': 1000000000000,
}
CN_NUM = {
'〇': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9, '零': 0, '令': 0,
'壹': 1, '贰': 2, '叁': 3, '肆': 4, '伍': 5, '陆': 6, '柒': 7, '捌': 8, '玖': 9, '貮': 2, '两': 2,
}
'''
unit = 0 # current
ldig = [] # digest
for cndig in reversed(cn):
# print(cndig)
if cndig != '第':
if cndig in CN_UNIT:
unit = CN_UNIT.get(cndig)
# print(unit)
if unit == 10000 or unit == 100000000:
ldig.append(unit)
unit = 1
elif cndig in CN_NUM:
dig = CN_NUM.get(cndig)
# print(dig)
if unit:
# print(dig)
dig *= unit
unit = 0
ldig.append(dig)
else:
return cn
if unit == 10:
ldig.append(10)
val, tmp = 0, 0
for x in reversed(ldig):
if x == 10000 or x == 100000000:
val += tmp * x
tmp = 0
else:
tmp += x
val += tmp
return val
def ok(y):
c = re.findall(r'\d+', str(y)) # 对返回的文字直接提取数字检查是否成功
if c: # 判断是否提取到数字如果成功返回文本 不成继续处理
y = ''.join(c)
else: # 提取里面还有这些字的标题然后再处理
p = re.compile('[一壹两贰二三叁四肆五伍六陆七柒八捌九玖十拾白百佰仟千万零]')
y = ''.join(p.findall(y)) # 提取包含上面字典里的标题文字
s = ['十', '拾', '白', '百', '佰', '仟', '千', '万']
if any(t in y for t in s): # 判断提取的标题是那种类型是否包含上面数字
# print(y)
y = chinese_to_arabic(y) # 再次召唤转换程序转换
# print('ok55', y)
else:
y = chinese_123(y)
#print(y)
return y
def okk():
path = 'D:\内容' #处理的文件夹
mldir = os.listdir(path)
for x in mldir:
print(ok(x), '< ',x)
#ok(x)
if __name__ == '__main__':
okk()
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。