-1

一連の名前のすべてのミドル イニシャルを削除しようとしています。Pythonでこれができることがわかったので、Rrubyで試してみることにしました。Python では、endswith コマンドを使用して、csv ファイル内のすべてのミドル イニシャルを削除できました。

steve A. walkins

michael todd

Angel, Blair C.

すべての名前が決まったパターンに従っているわけではありませんが、すべてのミドル イニシャルがそうです。したがって、同等のコマンドと endwith 関数の使用法を見つけようとするルビーを自分自身に教えるために、Python で実行できます。

これで機能する私のサンプル Python コードは次のとおりです。

 print ' '.join(i for i in name.split(' ') if not i.endswith('.'))
4

2 に答える 2

3

私の答えがIvaylo Strandjevによって提案されたものよりも優れているふりをするのではなく、PythonコードをRubyに「翻訳」するワンライナーが必要な場合:

name.split.select{|t| !t.end_with?('.')}.join(' ')

または、さらに明確に (@ŁukaszNiemier に感謝)

name.split.reject{|t| t.end_with?('.')}.join(' ')
于 2013-02-10T10:42:43.460 に答える
0

ルビーにはメソッドがありend_with?ます。

これは、あなたが望むことをするためのいくつかのルビーコードの例です:

def remove_initial name
   names = name.split
   names.select{|t| !t.end_with?(".")}.inject{|a,b| a + " " + b}
end

そして短い説明:

最初の行name.splitは、デフォルトの空白区切りを使用して名前を分割するだけです。

names.select{|t| !t.end_with?(".")}で終わらない名前のみをフィルタリングし、.それらinject{|a,b| a + " " + b}の間に単一の空白を追加して残りの名前を蓄積します。

于 2013-02-10T09:45:56.623 に答える