4

これが私のコードです:

start_j = raw_input('Enter a name: ')
start_j = start.replace("A", "J")
start_j = start.replace("B", "J")
start_j = start.replace("C", "J")
print "Your name is " + start_j

とにかく、すべてのアルファベットを 1 つのリストにまとめて、文字「Z」に到達するまで同じプロセスを何度も繰り返す必要がないようにする方法はありますか?ループを使用してみましたが、まだ正しい方法を取得できないようですそれをするために。

シナリオは次のとおりです。ユーザーは名前を入力するように求められます。名前に「J」以外の文字が含まれている場合は、replace() 関数を使用して自動的に置き換えられます。したがって、Jで始まる入力を出力します

次に例を示します。

site = raw_input('Enter your website: ')
site = site.replace("http://", "")
site = site.replace("https://", "")
site = site.replace("ftp://", "")
print "Your website is: " + site

予想される入力はhttp://www.google.com であるため、予想される出力は次のようになります。

Enter your website: http://www.google.com
Your website is: www.google.com

入力する必要がないように、「http://」、「https://」、「ftp://」をすべて 1 つのリストに入れる方法を探しています。

site = site.replace("something", "something)

何度も

4

5 に答える 5

4

正規表現を使用して、すべての文字を一度に置き換えることができます。

>>> import re
>>> re.sub(r'[A-Z]', 'J', 'This Is A Test Name')
'Jhis Js J Jest Jame'

(編集後):.startswith()文字列スライスを使用できます:

>>> name = 'A Name'
>>> 
>>> if not name.startswith('J'):
...     name = 'J' + name[1:]
... 
>>> name
'J Name'

で確認する必要がある理由はわかりませんが.startswith()。いずれにせよ、結果は同じになります。

于 2012-12-24T00:12:06.420 に答える
3

これを使用できます:

remove_from_start = ["http://", "https://", "ftp://"]
for s in remove_from_start:
    if site.startswith(s):
        site = site[len(s):]
        break

または正規表現ベースのソリューション:

import re
regex = '^(https?|ftp)://'
site = re.sub(regex, '', site)
于 2012-12-24T00:10:31.970 に答える
1
import re

site = raw_input('Enter your website: ')
# input http://www.google.com or https://www.google.com or ftp://www.google.com
site = re.sub('^(?:https?|ftp)://', '', site)
print "Your website is: " + site
于 2012-12-24T00:33:59.033 に答える
0

re、dict、およびラムダを使用します。

import re
replacte_to = {
    "http://": "",
    "https://": "",
    "ftp://": "",
}
re.sub("^(ht|f)tps?://", lambda match: replacte_to[match.group(0)], YOUR_INPUT_STRING)
于 2012-12-24T03:32:37.257 に答える
0

辞書を使う:

In [100]: import string

In [101]: dic=dict.fromkeys(string.ascii_uppercase,"J")

In [104]: start_j = raw_input('Enter a name: ')
Enter a name: AaBbCc

In [105]: "".join(dic.get(x,x) for x in start_j)
Out[105]: 'JaJbJc'

編集:

In [124]: dic={"https:":"","http:":"","ftp:":""}

In [125]: strs="http://www.google.com"

In [126]: "".join(dic.get(x,x) for x in strs.split("//"))
Out[126]: 'www.google.com'
于 2012-12-24T00:12:34.017 に答える