大写文本而不在python中大写链接

时间:2016-04-17 15:17:33

标签: python

我需要大量输入一行,但是如果我只使用upper()函数,链接地址会被大写,从而使它们无法使用。

例如:“酷视频www.youtube.com/watch?v=dQw4w9WgXcQ”

将转到:“COOL VIDEO WWW.YOUTUBE.COM/WATCH?V=DQW4W9WGXCQ”

链接地址已更改,不再有效。有没有办法忽略链接?

1 个答案:

答案 0 :(得分:0)

如果我在这里理解你的目标是正确的,那么你首先应该找到upper案例的字符串部分,然后用原始字符串的其余部分加入,这样:

>>> import re
>>> s = "Cool Video -> www.youtube.com/watch?v=dQw4w9WgXcQ"
>>> #Look for the part of string you want to upper case
>>> m = re.search(r'^.*(?=\s+->)', s)
>>> m
<_sre.SRE_Match object; span=(0, 10), match='Cool Video'>
>>> #m.start() and m.end() will give you start and endo position of matched string.
>>> new_s = s[m.start():m.end()].upper() + s[m.end():]
>>> #remember that strings are immutable, so make new one
>>> new_s
'COOL VIDEO -> www.youtube.com/watch?v=dQw4w9WgXcQ'
>>> #OR
>>> new_s = m.group().upper() + s[m.end():]
>>> new_s
'COOL VIDEO -> www.youtube.com/watch?v=dQw4w9WgXcQ'

编辑:

另外,是在链接前查找字符串,然后在其上应用upper方法:

>>> s = "Cool Video www.youtube.com/watch?v=dQw4w9WgXcQ"
>>> m = re.search(r'(.*)(?=www.*)',s)
>>> s = m.group().upper() + s[m.end():]
>>> s
'COOL VIDEO www.youtube.com/watch?v=dQw4w9WgXcQ'