1

次の文字列があるとします。

fame = "John"
lname = "Doe"

私がやりたいのは、lname を取得して、最初の文字の後のすべてが削除されるようにすることで、姓を省略できるようにすることです。出力は次のようになります。

fullname = "John D."

私はPythonの経験がないので、これが実際に何と呼ばれているのかわからないため、これについて何も見つけることができません.

ありがとう!

4

3 に答える 3

9
>>> fname = "John"
>>> lname = "Doe"
>>> fullname = '{0} {1}.'.format(fname, lname[0])
>>> fullname
'John D.'
于 2012-05-12T07:15:41.880 に答える
2

非常に単純です。文字列内の文字をインデックスで呼び出すことができます。したがって、最初の文字はインデックス 0、2 番目の文字は 1 などです。そう...

fullname = fname + " " + lname[0] + "."

または、もう少しpythonic:

fullname = "%s %s."%(fname, lname[0])

Python にはかなり優れたドキュメントがいくつかあります。これを読んで、Python で文字列を使用する方法を学びましょう: http://docs.python.org/library/string.html

- - 編集 - -

最近のバージョンの Python では、% 表記を使用するのは得策ではないことに気付きました。これは、プログラマーがインジェクション攻撃を回避できるようにするためだと思います。したがって、他の人がすでに言ったように、次のようなものを使用するのが最善です:

fullname = "{0} {1}.".format(fname, lname[0])

また

fullname = "{0} {1[0]}".format(fname, lname)

以前に提供した Python ドキュメントでも、これについて説明しています。明らかに、この編集のコードを信用することはできません。

于 2012-05-12T07:18:17.553 に答える
1

Python REPL からの次のサンプル コードは、目的を達成する方法の例です。のような文字列の要素にインデックスを付けたり、lname[0]部分文字列を「+」で連結したりできます。

>>> fame = "John"
>>> lname = "Doe"  
>>> fullname = fame + " " + lname[0] + '.'
>>> fullname
'John D.'
于 2012-05-12T07:16:40.173 に答える