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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

136閲覧

テキストファイルから要素Xの読み込み

City

総合スコア25

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/09/02 05:37

前提・実現したいこと

以下のようなテキスト文から"my name is"を検出し、
直後(同じ行)にある"[familyname]xxxx, [givenname]xxxxx"
のような文字列を獲得したいです。
※文字列は適当です。すみません。
複雑なものでも処理できるようになりたくて
ここに投稿させていただきました。

text

1#text.txt 2year=2018,month=08 3typhoon is coming!! 4my nAme IS cactus hahaha 5abcdefghijklmn 6my name is [familyname]power, [givenname]point 7sunny yeah happy happy happy 8my name is [familyname]!!!, [givenname]????

発生している問題

テキストファイルの読み込みは、自分、
内容文がちょっと難しくなっただけで手出しできなくなります。

該当のソースコード

しかしながら、一応思いついたコードというものはあります。

#一文字ずつ読み込んでいく。 #while文において、  if mを見つける: if yを見つける: if " "を見つける: ...

としてmy name isを見つけます。
そうしたら、欲しい文字列は同じ行にあるので、(不必要な要素もない)
readline()を使って大丈夫そうです。

補足情報(FW/ツールのバージョンなど)

windows10, VScode, anaconda,

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

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

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

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

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

guest

回答1

0

ベストアンサー

この手の問題を強引に解決するのは多少面倒で、正規表現の利用が検討されます。

Python

1import re 2 3 4with open('text.txt') as fin: 5 data = fin.read() 6 7for m in re.findall(r'^my name is (.+)$', data, re.MULTILINE): 8 print(m)

実行結果 Wandbox

plain

1[familyname]power, [givenname]point 2[familyname]!!!, [givenname]????

これを機に少し学んでみては。

あるいは

自由度が低くても良ければ、str.startswithを利用するのもアリです。
ただし、ちょっとでも問題が複雑になると対処できなくなります。

Python

1with open('text.txt') as fin: 2 data = fin.read() 3 4for line in data.split('\n'): 5 if not line.startswith('my name is '): 6 continue 7 8 print( 9 line[len('my name is '):] 10 )

実行結果 Wandbox

plain

1[familyname]power, [givenname]point 2[familyname]!!!, [givenname]????

投稿2018/09/02 05:49

編集2018/09/02 05:56
LouiS0616

総合スコア35660

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

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

City

2018/09/02 05:59

困難に思われた操作も可能なのですね!! パワフルなpyrhonを使いこなすLoui氏はすごいです.. 正規表現には今年の頭にも助けられたこと覚えています。 が、いまだできないということは今が学ぶ頃合いだとみれます。 柔軟に厚い解決策を丁寧にご指導いただき感謝します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問