前提・実現したいこと
classの実行結果をreturnとしてclassの呼び出し元に返すのではなく、printしたい
ここに質問の内容を詳しく書いてください。
python超初心者で、以下のURLを写経をしています。
https://github.com/jdepoix/youtube-transcript-api
『コンソール上』で実行結果を表示させるところまできたのですが、
『WEBサイト上』で実行結果を表示させるために、
『サーバー上のファイルにprintする』段階でつまずいています。
1:
実行コード
python
from youtube_transcript_api import YouTubeTranscriptApi
YouTubeTranscriptApi.get_transcript('CXXdz0Pxcp4', languages=['en', 'ja'])
実行結果
[{'折笠)あのさー\u3000私男性の端から 全部聞きたいんだけど'}, {'安元)やーっまてっ!!'}, {'以下略()'}] というYoutubeの字幕
2:
できるなら、/var/www/cgi-bin/配下に.pyファイルを置いて、URL直入力でブラウザ表示したい。
しかし、今は、pip install git+URL、で
/usr/lib/python3.5/site-packages/youtube_transcript_api
からpythonコードを実行している。
そこで、
/var/www/html/配下に
with open('/var/www/html/file.txt', 'w') as f:
によりWEBサイトドメインのドキュメントルートにファイル生成して、
自身にとって馴染みのあるPHPから実行結果を扱おうとしている
という経緯です。
発生しているエラーメッセージと該当のソースコードと試した事
python
1class _Writer(): 2 HTML_TAG_REGEX = re.compile(r'<[^>]*>', re.IGNORECASE) 3 4 def parse(self, plain_data): 5 return [ 6 { 7 re.sub(self.HTML_TAG_REGEX, '', unescape(xml_element.text)), 8 } 9 for xml_element in ElementTree.fromstring(plain_data) 10 if xml_element.text is not None 11 ] 12# def __repr__(self): 13# def __str__(self): 14 15with open('/var/www/html/file.txt', 'w') as f: 16#classの中身を書き込みしようと試みた 17#書き込み結果:<youtube_transcript_api._transcripts._Writer object at 0x7fb2cec97400> 18 t = _Writer() 19 print(t, file=f) 20 21#defの中身を書き込みしようと試みた 22#書き込み結果:<bound method _Writer.parse of <youtube_transcript_api._transcripts._Writer object at 0x7fb2ce619518>> 23 result = _Writer().parse 24 print(result, file=f) 25 26#classの中身を直接書き込みしようと試みた 27#書き込み結果:<class 'youtube_transcript_api._transcripts.Transcript'> 28 print(_Writer, file=f) 29 30#NameError: name 'parse' is not defined 31# print(parse(), file=f) 32 33#TypeError: parse() missing 1 required positional argument: 'plain_data' 34#positional argumentを指定しなさい、と怒られる 35#しかし、plain_dataをソースコード全体で検索してもコンパイル(?)されたファイルの中に定義されていて、plain_dataがいったい何を読み込んでいるのか辿る能力が私に無い 36 print(_Writer().parse(), file=f) 37 38 print('abcde' , file=f)
まとめ
returnの実行結果の中身を代入して、print内で扱う方法を教えてください。
下記の基礎概念が当てはまるように思うのですが、
parseメソッドの構成(self, plain_data)が、下記のCalcのように容易に理解できる引数構成になっていないため、returnの実行結果を取り扱えずにいます。
【python超入門!】クラスやメソッドについて解説します。
https://www.sejuku.net/blog/72161
class Calc: def __init__(self, a, b): self.a = a self.b = b def Sum(self): self.sum = self.a + self.b return self.sum ins = Calc(2, 3) print(ins.Sum())
回答2件
あなたの回答
tips
プレビュー