将输入字符串中的数字转换成迷你数字字符,您可以复制带迷你数字的纯文本到任意地方。
(本笔记适合初通Python,熟悉六大基本数据类型(str字符串、int整型、float浮点型、list列表、tuple元组、set集合、dict字典)常规应用的 coder 翻阅)
Python 官网:https://www.python.org/
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
本文质量分:
CSDN质量分查询入口:http://www.csdn.net/qc
QQ:⁴⁷⁹⁴⁶⁹⁸³⁸
所谓的上标“生成器”,看起来很“高级”,有些神奇。其实质,就是字符串替换。将输入字符串中的数字字符,替换成迷你上标数字字符。只不过,将操作代码作了封装。
经过一阵鼓捣,我也用仅会的Python基础“技术”,写出了上下标数字“生成”工具。
上下标数字字符串设置
class CharMini:
def __init__(self):
self.SupNums = '⁰¹²³⁴⁵⁶⁷⁸⁹' # 上标数字字符串。
self.SubNums = ''.join([chr(i) for i in range(8320, 8330)]) # 根据迷你下标字符编码生成下标数字字符串。
算法解析:遍历输入字符串,用迷你上下标数字字符替换其中数字字符,打印输出替换数字字符后的字符串。但这根本就不是“生成”,就是一个“转换器”。
def toSupNum(self, s: str):
' 转换数字迷你上标 '
result = ''
for i in s:
if i.isdigit():
result += self.SupNums[int(i)]
else:
result += i
return result
def toSubNum(self, s: str):
' 转换数字迷你下标 '
result = ''
for i in s:
if i.isdigit():
result += self.SubNums[int(i)]
else:
result += i
return result
代码运行输出文本效果
原字符串:我的电话是68780057,你的是023587966
数字上标:我的电话是⁶⁸⁷⁸⁰⁰⁵⁷,你的是⁰²³⁵⁸⁷⁹⁶⁶
数字下标:我的电话是₆₈₇₈₀₀₅₇,你的是₀₂₃₅₈₇₉₆₆
原字符串:圆周率:3.1415926535
数字上标:圆周率:³.¹⁴¹⁵⁹²⁶⁵³⁵
数字下标:圆周率:₃.₁₄₁₅₉₂₆₅₃₅
原字符串:我的生命于1973年0501的某一时刻启动了
数字上标:我的生命于¹⁹⁷³年⁰⁵⁰¹的某一时刻启动了
数字下标:我的生命于₁₉₇₃年₀₅₀₁的某一时刻启动了
代码运行效果截屏图片
替换功能实现代码
class CharMini:
def __init__(self):
self.SupNums = '⁰¹²³⁴⁵⁶⁷⁸⁹' # 上标数字字符串。
self.SubNums = ''.join([chr(i) for i in range(8320, 8330)]) # 根据迷你下标字符编码生成下标数字字符串。
def toSupNum(self, s: str):
' 转换数字迷你上标 '
result = ''
for i in s:
if i.isdigit():
result += self.SupNums[int(i)]
else:
result += i
return result
def toSubNum(self, s: str):
' 转换数字迷你下标 '
result = ''
for i in s:
if i.isdigit():
result += self.SubNums[int(i)]
else:
result += i
return result
if __name__ == '__main__':
char = CharMini()
print(f"\n上标:{char.SupNums};下标:{char.SubNums}")
s = input(f"\n输入带数字字符串:")
s = '圆周率:3.1415926535' if not s else s
print(f"\n原字符串:{s}\n\n数字上标:{char.toSupNum(s)}\n\n数字下标:{char.toSubNum(s)}")
仔细观察,上、下标迷你数字字符的替换的算法完全一致,不同的仅是目录替换迷你数字字符而已,完全可以进一步对代码进行复用。
将替换算法逻辑代码封装成replace方法,传入输入字符串s和目标迷你数字上下标数字字符串rules,返回替换成目标迷你数字上下字符的字符串。分别在toSupNum、toSubNum中以相应的rules调用replace方法就行。
优化代码
class CharMini:
def __init__(self):
self.SupNums = '⁰¹²³⁴⁵⁶⁷⁸⁹' # 上标数字字符串。
self.SubNums = ''.join([chr(i) for i in range(8320, 8330)]) # 根据迷你下标字符编码生成下标数字字符串。
def toSupNum(self, s: str):
' 转换数字迷你上标 '
return self.replace(s, self.SupNums)
def toSubNum(self, s: str):
' 转换数字迷你下标 '
return self.replace(s, self.SubNums)
def replace(self, s: str, rules: str):
' 迷你数字替换 '
result = ''
for i in s:
if i.isdigit():
result += rules[int(i)]
else:
result += i
return result
if __name__ == '__main__':
char = CharMini()
print(f"\n上标:{char.SupNums};下标:{char.SubNums}")
s = input(f"\n输入带数字字符串:")
s = '圆周率:3.1415926535' if not s else s
print(f"\n原字符串:{s}\n\n数字上标:{char.toSupNum(s)}\n\n数字下标:{char.toSubNum(s)}")
原字符串:你是我的520,我是你的1314。
数字上标:你是我的⁵²⁰,我是你的¹³¹⁴。
数字下标:你是我的₅₂₀,我是你的₁₃₁₄
(源码较长,点此跳过源码)
#!/sur/bin/nve python
# coding: utf-8
class CharMini:
def __init__(self):
self.SupNums = '⁰¹²³⁴⁵⁶⁷⁸⁹' # 上标数字字符串。
self.SubNums = ''.join([chr(i) for i in range(8320, 8330)]) # 根据迷你下标字符编码生成下标数字字符串。
def toSupNum(self, s: str):
' 转换数字迷你上标 '
result = ''
for i in s:
if i.isdigit():
result += self.SupNums[int(i)]
else:
result += i
return result
def toSubNum(self, s: str):
' 转换数字迷你下标 '
result = ''
for i in s:
if i.isdigit():
result += self.SubNums[int(i)]
else:
result += i
return result
if __name__ == '__main__':
char = CharMini()
print(f"\n上标:{char.SupNums};下标:{char.SubNums}")
s = input(f"\n输入带数字字符串:")
s = '圆周率:3.1415926535' if not s else s
print(f"\n原字符串:{s}\n\n数字上标:{char.toSupNum(s)}\n\n数字下标:{char.toSubNum(s)}")
# 代码复用优化后代码 #
class CharMini:
def __init__(self):
self.SupNums = '⁰¹²³⁴⁵⁶⁷⁸⁹' # 上标数字字符串。
self.SubNums = ''.join([chr(i) for i in range(8320, 8330)]) # 根据迷你下标字符编码生成下标数字字符串。
def toSupNum(self, s: str):
' 转换数字迷你上标 '
return self.replace(s, self.SupNums)
def toSubNum(self, s: str):
' 转换数字迷你下标 '
return self.replace(s, self.SubNums)
def replace(self, s: str, rules: str):
' 迷你数字替换 '
result = ''
for i in s:
if i.isdigit():
result += rules[int(i)]
else:
result += i
return result
if __name__ == '__main__':
char = CharMini()
print(f"\n上标:{char.SupNums};下标:{char.SubNums}")
s = input(f"\n输入带数字字符串:")
s = '圆周率:3.1415926535' if not s else s
print(f"\n原字符串:{s}\n\n数字上标:{char.toSupNum(s)}\n\n数字下标:{char.toSubNum(s)}")
我的HOT博:
本次共计收集 227 篇博文笔记信息,总阅读量 38.99w,平均阅读量 1717。已生成 25 篇阅读量不小于 3000 的博文笔记索引链接。数据采集于 2023-09-04 22:05:07 完成,用时 4 分 18.09 秒。
精品文章:
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
CSDN实用技巧博文: