python3で以下の文章から、エスケープ文字「\」から始まるエスケープシーケンス(改行\nなど)をすべて削除しようと思い、以下のように実行しました。
(anaconda3のjupyter notebookを使っています)
corpus
1私達は、エンジニアが抱える問題の解決を全力でサポートします。 2質問・回答によって 生まれたコンテンツを、同じ問題を持った人に最適な形で届けます。 3 4プログラミングに関して、わからないことがあれば是非teratailで質問してください。 5あなたがわかることがあれば、是非解決方法をシェアして解決の手助けをしてください。 6 7あなたの全ての行動が、いつか多くの日本のエンジニアの為になります。
python
1from janome.tokenizer import Tokenizer 2 3t = Tokenizer() 4 5# ファイルをオープンする 6corpus_text = open("corpus.txt", "r") 7 8# すべての内容を読み込む 9corpus = corpus_text.read() 10 11# ファイルをクローズする 12corpus_text.close() 13 14# 分かち書きにする 15tmp= t.tokenize(corpus, wakati = True) 16 17print(tmp) 18 19print('='*50) 20 21# 空白を消す 22word_list = [word for word in tmp if not (word.startswith('\'))] 23 24print(word_list)
output
1['私', '達', 'は', '、', 'エンジニア', 'が', '抱える', '問題', 'の', '解決', 'を', '全力', 'で', 'サポート', 'し', 'ます', '。', '\n', '質問', '・', '回答', 'によって', ' ', '生まれ', 'た', 'コンテンツ', 'を', '、', '同じ', '問題', 'を', '持っ', 'た', '人', 'に', '最適', 'な', '形', 'で', '届け', 'ます', '。', '\n\n', 'プログラミング', 'に関して', '、', 'わから', 'ない', 'こと', 'が', 'あれ', 'ば', '是非', 'teratail', 'で', '質問', 'し', 'て', 'ください', '。', '\n', 'あなた', 'が', 'わかる', 'こと', 'が', 'あれ', 'ば', '、', '是非', '解決', '方法', 'を', 'シェア', 'し', 'て', '解決', 'の', '手助け', 'を', 'し', 'て', 'ください', '。', '\n\n', 'あなた', 'の', '全て', 'の', '行動', 'が', '、', 'いつか', '多く', 'の', '日本', 'の', 'エンジニア', 'の', '為', 'に', 'なり', 'ます', '。'] 2================================================== 3['私', '達', 'は', '、', 'エンジニア', 'が', '抱える', '問題', 'の', '解決', 'を', '全力', 'で', 'サポート', 'し', 'ます', '。', '\n', '質問', '・', '回答', 'によって', ' ', '生まれ', 'た', 'コンテンツ', 'を', '、', '同じ', '問題', 'を', '持っ', 'た', '人', 'に', '最適', 'な', '形', 'で', '届け', 'ます', '。', '\n\n', 'プログラミング', 'に関して', '、', 'わから', 'ない', 'こと', 'が', 'あれ', 'ば', '是非', 'teratail', 'で', '質問', 'し', 'て', 'ください', '。', '\n', 'あなた', 'が', 'わかる', 'こと', 'が', 'あれ', 'ば', '、', '是非', '解決', '方法', 'を', 'シェア', 'し', 'て', '解決', 'の', '手助け', 'を', 'し', 'て', 'ください', '。', '\n\n', 'あなた', 'の', '全て', 'の', '行動', 'が', '、', 'いつか', '多く', 'の', '日本', 'の', 'エンジニア', 'の', '為', 'に', 'なり', 'ます', '。']
出力からわかるように、リスト中の'\n'や'\n\n'などが削除されることを期待していましたが、削除はされていませんでした。
なぜこのコードは正しく機能しないのでしょうか?
また、どうすれば「¥」から始まる文字列を指定できるでしょうか?
追記
以下のように一度raw文字列に直すことで""から始まるエスケープシーケンスを検出できました。
raw文字列に直した際、各単語は「''」で囲まれていたので、「'\」から始まる単語を排除するように書いています。
python
1# 分かち書きにする 2tmp= t.tokenize(corpus, wakati = True) 3 4print(tmp) 5 6print('='*50) 7 8#エスケープシーケンスを削除する 9word_list = [] 10for word in tmp: 11 if not repr(word).startswith('\'\'): 12 word_list.append(word) 13 14print(word_list)
output
1['私', '達', 'は', '、', 'エンジニア', 'が', '抱える', '問題', 'の', '解決', 'を', '全力', 'で', 'サポート', 'し', 'ます', '。', '\n', '質問', '・', '回答', 'によって', ' ', '生まれ', 'た', 'コンテンツ', 'を', '、', '同じ', '問題', 'を', '持っ', 'た', '人', 'に', '最適', 'な', '形', 'で', '届け', 'ます', '。', '\n\n', 'プログラミング', 'に関して', '、', 'わから', 'ない', 'こと', 'が', 'あれ', 'ば', '是非', 'teratail', 'で', '質問', 'し', 'て', 'ください', '。', '\n', 'あなた', 'が', 'わかる', 'こと', 'が', 'あれ', 'ば', '、', '是非', '解決', '方法', 'を', 'シェア', 'し', 'て', '解決', 'の', '手助け', 'を', 'し', 'て', 'ください', '。', '\n\n', 'あなた', 'の', '全て', 'の', '行動', 'が', '、', 'いつか', '多く', 'の', '日本', 'の', 'エンジニア', 'の', '為', 'に', 'なり', 'ます', '。'] 2================================================== 3['私', '達', 'は', '、', 'エンジニア', 'が', '抱える', '問題', 'の', '解決', 'を', '全力', 'で', 'サポート', 'し', 'ます', '。', '質問', '・', '回答', 'によって', ' ', '生まれ', 'た', 'コンテンツ', 'を', '、', '同じ', '問題', 'を', '持っ', 'た', '人', 'に', '最適', 'な', '形', 'で', '届け', 'ます', '。', 'プログラミング', 'に関して', '、', 'わから', 'ない', 'こと', 'が', 'あれ', 'ば', '是非', 'teratail', 'で', '質問', 'し', 'て', 'ください', '。', 'あなた', 'が', 'わかる', 'こと', 'が', 'あれ', 'ば', '、', '是非', '解決', '方法', 'を', 'シェア', 'し', 'て', '解決', 'の', '手助け', 'を', 'し', 'て', 'ください', '。', 'あなた', 'の', '全て', 'の', '行動', 'が', '、', 'いつか', '多く', 'の', '日本', 'の', 'エンジニア', 'の', '為', 'に', 'なり', 'ます', '。']
回答2件
あなたの回答
tips
プレビュー