質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

6376閲覧

Pythonで字下げしているブロック内で3連ダブルクォートを使い文字列を扱う際のスマートな書き方を教えて下さい。

lemonade

総合スコア10

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2015/02/06 14:59

編集2015/02/06 14:59

字下げが必要なブロック内で、
3連ダブルクォートで複数行に渡る文字列を表現したいのですが、
3連ダブルクォート内を同じブロック内の他の部分に合わせて
字下げして書いてしまうと、字下げのTabの部分までそのまま、
変数内に格納されてしまう結果になりました。

そこで、そうならないようにする為に、
下記のように3連ダブルクォート内だけを字下げしないで書いてみたところ、
エラーは出ず、結果も問題なかったのですが、
同じブロック内の他の部分が字下げしている中、
3連ダブルクォート内の部分だけが字下げされず前に飛び出していて、
見た目には非常に違和感を感じます。

字下げはしつつも、その字下げ部分(tab)は変数に格納されないような、
もっとスマートな書き方はできないものでしょうか?

自分なりにWebでいろいろ調べたり、試行錯誤してみましたが、
うまいエスケープの方法が見つかりませんでした。

当方の実行環境はOSはWindows7 64bitで、
使用しているPythonのバージョンは2.7.6(64bit)です。

lang

1#coding: utf-8 2 3a = 1 4b = 1 5 6if a is b : 7 8 content = """\ 912345 106789A 11BCDEF 12 """ % locals() 13 14 f = open('hoge.txt' , 'w') 15 f.write(content) 16 f.close()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

textwrap.dedent(text)
text の各行に対し、共通して現れる先頭の空白を削除します。

この関数は通常、三重引用符で囲われた文字列をスクリーン/その他の左端にそろえ、なおかつソースコード中ではインデントされた形式を損なわないようにするために使われます。

7.7. textwrap — テキストの折り返しと詰め込み — Python 2.7ja1 documentation

投稿2015/02/07 01:16

Lhankor_Mhy

総合スコア35860

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lemonade

2015/02/07 08:40

ご回答いただきまして、ありがとうございます。 これは正に、私が求めていたものそのもの、ずばりです。 こういったものが用意されていたのですね。 ご回答を元に下記の様に書いてみたところ、 字下げは維持しつつも、変数には行頭のtabが格納されることもなく、 思い通りの結果になりました。 この度は真にありがとうございました。 本当に助かりました。 ---------------------------------------------------------------------------- #coding: utf-8 import textwrap a = 1 b = 1 if a is b : content = textwrap.dedent("""\ 12345 6789A BCDEF """) f = open('hoge.txt' , 'w') f.write(content) f.close() ----------------------------------------------------------------------------
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問