24

私はリストを持っています:

Cat
Dog
Monkey
Pig

私はスクリプトを持っています:

import sys
input_file = open('list.txt', 'r')
for line in input_file:
    sys.stdout.write('"' + line + '",')

出力は次のとおりです。

"Cat
","Dog
","Monkey
","Pig",

私は…したい:

"Cat","Dog","Monkey","Pig",

リストの行を処理することで発生するキャリッジリターンを取り除くことができません。最後に、を取り除くためのボーナスポイント。最後のインスタンスを見つけて削除する方法がわかりません。

4

3 に答える 3

28

str.rstripまたは単にstr.stripは、ファイルから読み取られたデータからキャリッジリターン(改行)を分割するための適切なツールです。str.stripは、両端から空白を削除することに注意してください。改行の削除のみに関心がある場合は、strip('\n')

行を変更します

 sys.stdout.write('"' + line + '",')

sys.stdout.write('"' + line.strip() + '",')

あなたの場合、もっと単純な解決策は

>>> from itertools import imap
>>> with open("list.txt") as fin:
    print ','.join(imap(str.strip, fin))


Cat,Dog,Monkey,Pig

またはリスト内包表記を使用するだけ

>>> with open("test.txt") as fin:
    print ','.join(e.strip('\n') for e in  fin)


Cat,Dog,Monkey,Pig
于 2013-02-21T16:42:32.003 に答える
11

.rstrip()文字列の右側から改行を削除するために使用できます。

line.rstrip('\n')

または、すべての空白(スペース、タブ、キャリッジリターンを含む)を削除するように指示できます。

line.rstrip()

これは、文字列の両側から空白または特定の文字を削除する.strip()メソッドのより具体的なバージョンです。

特定のケースでは、単純なものを使用できますが、改行のみ.strip()を削除する一般的なケースでは、 `.rstrip('\ n')を使用します。

ただし、別の方法を使用して文字列を記述します。

with open('list.txt') as input_file:
    print ','.join(['"{}"'.format(line.rstrip('\n')) for line in input_file])

を使用することにより','.join()、最後のコンマを回避し、このstr.format()メソッドを使用することは、多くの文字列連結よりも目には簡単です(言うまでもなく高速です)。

于 2013-02-21T16:43:58.007 に答える
1

まず、すべてを1行に表示するには、の外皮を取得する必要があります'\n'。私はline.rstrip('\n')うまく機能することがわかりました。

'、'を取り除くために、最後に引用符を追加してすべての単語をリストに入れます。次に、join()を使用して、リスト内のすべての単語を「、」で結合します

temp = []
for line in file:
    i = line.rstrip('\n')
    word = '"'+i+'"'
    temp.append(word)
print ",".join(temp)

目的の出力が得られるはずです

于 2013-02-21T16:48:28.000 に答える