2010-12-06 23 views
26

私はPythonでファイルからテキストを解析しています。私はすべての改行(\ n)を
に置き換えなければなりません。なぜなら、このテキストはHTMLコンテンツを構築するからです。例えば、ここにファイルからいくつかの行は次のようになります。 nを<br />に置き換えます。

'title\n' 

は今、私が行います

thatLine.replace('\n', '<br />') 
print thatLine 

そして、私はまだそれの後に改行してテキストを参照してください。

+2

唯一のソリューションCSSを考えてみましょう:http://stackoverflow.com/a/7602751/ XSSの可能性を減らすために74449 – Myster

答えて

35

だけキックのために、あなたも<br />で文字列内のすべての改行を置き換えるために

mytext = "<br />".join(mytext.split("\n")) 

を行うことができます。

+16

これを受け入れていただきありがとうございますが、代わりに@ Falmarriの回答を受け入れてください。それははるかにPythonicです。これは、これを行うための面白い、後方の方法の多くです。実際にはお勧めしません... –

+1

@ Falmarriの答えは「もっとPythonic」ではありませんが、より効率的でおそらく高速です。 – martineau

+3

@martineau:私は、「これを行うには、1つ、好ましくは1つの明白な方法が必要です」という意味でこれを意味していました。そして、私は私が本当にそうではないと確信しています。 –

113

thatLine = thatLine.replace('\n', '<br />')

str.replace()、それはあなたが渡した文字列を変更しない、文字列のコピーを返します。Pythonで

+4

この回答は受け入れられたものよりも良いようです。 – SparkAndShine

+0

ようこそStackOverflowへ。 –

7
thatLine = thatLine.replace('\n', '<br />') 

文字列は不変です。 割り当て演算子を使用して再作成する必要があります。

4

また、文字列がそれに<>または&文字を持っている場合は問題を抱えている、など、これらに対処するcgi.escape()にそれを渡すことができます。私は "\" をエスケープしなければならなかったのpython3を使用して、いくつかの理由

http://docs.python.org/library/cgi.html?highlight=cgi#cgi.escape

3

-

somestring.replace('\\n', '') 

に署名・ホープ、これは他の誰かに役立ちます! splitlinesを使用し、\r\nのような文字の組み合わせを含む多くの改行区切り文字を扱うように

関連する問題