2016-04-17 3 views
-2

入力の行を大文字にする必要がありますが、単にupper()関数を使用すると、リンクアドレスが大文字になり、使用できなくなります。例えばPythonのリンクを大文字にすることなくテキストを大文字にする

"クールビデオwww.youtube.com/watch?v=dQw4w9WgXcQ"

がに変わります:"COOL VIDEOのWWW.YOUTUBE.COM/WATCH?V=DQW4W9WGXCQ"

リンクアドレスが変更されており、もう動作しません。リンクを無視する方法はありますか?

+0

「リンクを無視する」*という方法はありません。なぜなら、Pythonに関しては単なるテキストなのだからです。あなたは、文字列の特定の部分を抽出するために何かを書かなければならないでしょうし、大文字にしたくない文字列を抽出し、それらを別々に扱ってから一緒に貼り付ける必要があります。 – jonrsharpe

+0

ここで大文字にしたい部分は... –

+0

@IronFistリンクを除くすべて – sagiksp

答えて

0

を元の文字列は、この方法:

>>> 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' 

EDIT:

Otherwayは、リンクの前の文字列を探し、その後、適用することですupper方法:

+0

値下しはありません。 「クールビデオ - >リンク」は単なる例でした。 – sagiksp

+0

@sageek ..あなたの要件をよりよく説明したより良い例であなたの質問を編集してください! –

+0

@sageek ...別の解決策で編集された解答を確認する –

0

あなたはこのような何かを試みることができる:私はここにあなたの目標を理解することが正しかった場合は、あなたが最初のupperケースに文字列の一部を探す必要があり、その後の残りの部分と背面参加

link = "www.youtube.com/watch?v=dQw4w9WgXcQ" 
text = upper("cool video -> ") + link 
+0

これは入力です。これは1行の文字列です。 – sagiksp

関連する問題