リスト全ての要素の改行(’\n’)を削る

9月 19th, 2016

何というか・・・ものすごく大変だった(o_ _)o。

単純に考えれば、for文を回せばいい(何故か¥の半角を入力しようとすると「\」になってしまうので「\」を使っているが、意味合いは同じ)

a=['it\n','is\n','a\n','pen\n']

k=[]
for i in a:
	i=i.rstrip('\n')
	k.append(i)

print(k)

でも、できるならまとめてやってしまいたい。

世の中には「map」とかいうものがあって、リスト一括処理ができるらしい。で、いろいろやってみたのだが、どうにもこうにも上手く行かない。

調べ回ってようやく方法を見つけた。途中のどたばたは面倒なので割愛。lambdaとか変なものを突っ込んだものだからぐじゃぐじゃだったさ・・・

a=['it\n','is\n','a\n','pen\n']
k=list(map(x.rstrip, a))
print (k)

k=の行は、2系と3系で書き方が違うので注意がいる。上記は3系の書き方。3からは、map処理した結果はmap objectとして返される。なので、通常のリストにしたければ、list()でリストに変換する必要がある。

ちなみに、rstripをstripにしても同じ結果が返る。

ただ、rstripに引数指定をしようとすると叱られる。何やら釈然としないのだが・・・とりあえず、その場合は関数で指定すれば通る(タブを使いたくないので、関数定義を一行ですませているが、通常表記でも話は同じ)。

def rst(x):return x.rstrip(‘\n’)
k=list(map(rst, a))
print(k)

ふーっ・・・疲れたなぁ、もう・・・mapは便利そうなんだけど、今一つ分かりにくい。でも、別途関数を指定してやる分にはそんなに難しくない、かも。

関連記事

  1. 変数のidや型をprint文で表示させる
  2. オブジェクト指向と大格闘2(無理矢理使ってみる)
  3. 同じclass内にあるメソッドを呼び出してみる
  4. pythonの「or」はちょっとくせ者っぽい
  5. printでの「,」と「+」
  6. 他のクラスからインスタンス変数って使えるんだね
  7. 時刻の差分を計算したい
  8. Python3.5にwxPythonを導入する

Comments are closed.