改变大小写,除非它是python中的超链接

时间:2014-03-28 09:04:39

标签: python string case

更改字符串的最简单方法是什么,同时保留空格,将每个大写字母更改为小写除了链接?

所有链接都以' http://'开头。或&& 39; https://'

一个例子是:

HELLO     HOW ARE YOU  CHECK OUT THIS: http://sOme.Link THIS IS AWESOME

应改为:

hello     how are you  check out this: http://sOme.Link this is awesome

我试过.lower()当然会弄乱链接。我想过一个字一个字地做,但这会弄乱白色空间。

所以我猜测必须有像'sed'命令但无法找到它。

3 个答案:

答案 0 :(得分:1)

words = string.split()

lower_words = []

for word in words:
    if word.startswith(('http:','https:')):
        lower_words.append(word)
    else:
        lower_words.append(word.lower())

print ' '.join(lower_words)

答案 1 :(得分:1)

我差点把所有的头发拉出来,但我终于把它弄好了。保留空格的非链接的小写:

string = 'HELLO HOW ARE      YOU CHECK OUT        THIS: http://sOme.Link THIS IS   AWESOME'

i=0
while i < len(string):
    try:
        end_i = i+string[i:].index(' ')
    except ValueError:
        end_i = len(string)
    if string[i:end_i].startswith(('http:','https:')):
        pass
    else:
        string = string[:i]+string[i:end_i].lower()+string[end_i:]
    i = end_i+1

print string

希望你喜欢它。

答案 2 :(得分:0)

对于这个简单的例子,我可以使用正则表达式来进行拆分:

>>> import re
>>> s = "HELLO     HOW ARE YOU  CHECK OUT THIS: http://sOme.Link THIS IS AWESOME"
>>> parts = re.split("(\s+)", s)
>>> parts
['HELLO', '     ', 'HOW', ' ', 'ARE', ' ', 'YOU', '  ', 'CHECK', ' ', 'OUT', ' ', 'THIS:', ' ', 'http://sOme.Link', ' ', 'THIS', ' ', 'IS', ' ', 'AWESOME']
>>> ''.join(p.lower() if not p.startswith(('http:', 'https')) else p for p in parts)
'hello     how are you  check out this: http://sOme.Link this is awesome'

或者也许只是在链接上进行另一种方式拆分,但我倾向于用Python编写,而不是尽可能地编写正则表达式。