###前提・実現したいこと
複数行の文字列を検索して、その前後を表示するプログラムを作っています。
検索元の文字列を表示するのはふつうにできるのに、検索結果を表示すると\uが混ざります。
全角スペースが「\u3000」になってしまいします。どうしてですか…?
###該当のソースコード
『たなばたさま』の歌詞の中から、「お星さま」がある付近を抜き出して表示したい。
python
1lyric = '''ささの葉 さらさら 2のきばに ゆれる 3お星さま きらきら 4きんぎん 砂子(すなご) 5 6五しきの たんざく 7わたしが かいた 8お星さま きらきら 9空から みてる''' 10 11print(lyric) 12 13splited = lyric.split('\n') 14for i, line in enumerate(splited): 15 if 'お星さま' in line: 16 print(splited[i-1:i+2])
print(lyric)でこれが返ってきます(合ってる)。
ささの葉 さらさら のきばに ゆれる お星さま きらきら きんぎん 砂子(すなご) 五しきの たんざく わたしが かいた お星さま きらきら 空から みてる
print(splited[i-1:i+2])でこれが返ってきます(思ってるのとちがう)。
['のきばに\u3000ゆれる', 'お星さま\u3000きらきら', 'きんぎん\u3000砂子(すなご)'] ['わたしが\u3000かいた', 'お星さま\u3000きらきら', '空から\u3000みてる']
さっきは全角スペースきちんと表示できてたと思うのに\u3000になるのどうして…!!
###試したこと
lyricをutf-8にencodeできていないからいけないのかなと思い、こういうふうに変えてみました。
この行を、
python
1splited = lyric.split('\n')
こういうふうに。
python
1splited = lyric.encode('utf-8').decode('utf-8').split('\n')
結果は変わりませんでした…。
つぎに、print部分を以下のように変えてみました。
python
1print(','.join(splited[i - 1:i + 2]))
するとうまくいきました! よくわかりません!!
のきばに ゆれる,お星さま きらきら,きんぎん 砂子(すなご) わたしが かいた,お星さま きらきら,空から みてる
###補足情報(言語/FW/ツール等のバージョンなど)
python -Vしたらこうなります。
Python 3.5.3 :: Anaconda 2.5.0 (x86_64)
OSX Yosemite 10.10.5です。
ターミナルは2.5.3です。
ターミナルに、下記のように入力しました。
python (ファイルパス).py
よろしくお願いします!
回答2件
あなたの回答
tips
プレビュー