扫码关注官方订阅号
][1]
[]内的文字新建一行秒自动对齐[]右边的文字。如果一行内 只有一个[],一个中文占2个空格,英文占一个,就能做到,但如果出现多个[]就想不到了。
请教用python处理这样的问题应该怎么做呢?
谢谢!!
ps:[]内的字符不单一,有的是[F],有的可能是[Fm]、[Fmaj7]多个字符。
小伙看你根骨奇佳,潜力无限,来学PHP伐。
python3
设置字体为 等宽字体
等宽字体
>>> s='[F]内的文字新建一行秒自动对齐[C]右边的文字' >>> import re >>> ptn=re.compile(r'\[([^]]+)\]([^[]+)') >>> ss='';t='' >>> for x,y in ptn.findall(s): ss+=('{:<%d}'% len(bytes(y,'gbk'))).format(x) t+=y >>> print(ss,t,sep='\n') F C 内的文字新建一行秒自动对齐右边的文字
另一个适应型更强的方法:
outputChords = "" outputLyrics = "" inBracket = False for i in range(len(line)): if line[i] == '[': inBracket = True outputChords = outputChords + " " * (max(0, len(outputLyrics.encode('gbk')) - len(outputChords.encode('gbk')))) elif inBracket and line[i] == ']': inBracket = False elif inBracket and line[i] == '#': pass elif inBracket and str.isupper(line[i]): outputChords = outputChords + line[i] elif inBracket: # DONT TRANSPOSE AND PUT IN OUTPUTCHORDS outputChords = outputChords + line[i] else: outputLyrics = outputLyrics + line[i]
outputChords = "" outputLyrics = "" inBracket = False
for i in range(len(line)):
if line[i] == '[': inBracket = True outputChords = outputChords + " " * (max(0, len(outputLyrics.encode('gbk')) - len(outputChords.encode('gbk')))) elif inBracket and line[i] == ']': inBracket = False elif inBracket and line[i] == '#': pass elif inBracket and str.isupper(line[i]): outputChords = outputChords + line[i] elif inBracket: # DONT TRANSPOSE AND PUT IN OUTPUTCHORDS outputChords = outputChords + line[i] else: outputLyrics = outputLyrics + line[i]
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
python3
设置字体为
等宽字体另一个适应型更强的方法: