操作url以返回特殊字符后的字符串/数字长度



给定一个URL,我希望能够获得每个特殊字符后的字符数(如果是非数字字符,则为s,如果是数字字符则为d(。例如,对于这样的URL:

url="https://imag9045.pexels1.pre45p.com/photos/414612/pexels-photo-414612.jpeg"

我希望输出为:'4s.4d.6s.1d.4s.2d.com/6s/6d/6s-5s-6d.'

我下面的代码只在域之前(在".com"之前(生成所需的结果。我在生成其余部分时遇到问题。

How can I manipulate it to get the desired output (`'4s.4d.6s.1d.4s.2d.com/6s/6d/6s-5s-6d.'`)? 

您将需要在每个字符上循环,就像在中一样

import string
def mysplit(path):
s=d=0
out=''
for c in path:
if c in string.punctuation:
if s:
out += f'{s}s'
s=0
if d:
out += f'{d}d'
d=0
out += c
elif c in string.digits:
d+=1
else:
s+=1
if s:
out += f'{s}s'
if d:
out += f'{d}d'
return out
>>> mysplit('/photos/414612/pexels-photo-414612.jpeg')
'/6s/6d/6s-5s-6d.4s'

除了处理顶级域名外,上述功能还可以用于url的第一部分以及

>>> mysplit('https://imag9045.pexels1.pre45p.com')
'5s://4s4d.6s1d.4s2d.3s'

最新更新