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

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

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

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

Q&A

解決済

2回答

1400閲覧

Python forループ文で取得したものを他の文章に繋げたい

mochihi

総合スコア5

Python

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

0グッド

0クリップ

投稿2019/08/19 06:12

前提・実現したいこと

タイトル等の始めの文章
ソースコード1
ソースコード2
ソースコード3
後書きの終わりの文章

上の文のようにfor文で取得したもの(ソースコード)を入れたいのですが、前後の文章と合わせて全て繰り返されてしまいます。

発生している問題・エラーメッセージ

タイトル等の始めの文章 ソースコード1 後書きの終わりの文章 タイトル等の始めの文章 ソースコード2 後書きの終わりの文章 タイトル等の始めの文章 ソースコード3 後書きの終わりの文章 となってしまいます。

該当のソースコード

Python

1from bs4 import BeautifulSoup 2 3html_doc = requests.get("https://sample.hoge").text 4soup = BeautifulSoup(html_doc, 'html.parser') 5 6url = soup.find_all(href=re.compile("hoge1")) 7img = soup.find_all('img', src=re.compile('hoge2')) 8title = soup.find_all(class_="hoge3") 9 10for urls,imgs,titles in zip(url,img,title): 11 s = 'html文' + urls.get('href') + imgs.get('src') + str(titles.find("a")) + 'html文\n' 12 ss = "タイトル等の始めの文章\n" + s + "後書きの終わりの文章" 13 print(str(ss)) 14

試したこと

ss = "タイトル等の始めの文章\n" + s + "\n後書きの終わりの文章" 
をprintの後にインデント無しで書いてみたりしましたが最後の一まとめだけとなり上手くいかず。よろしくお願いします。

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

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

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

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

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

guest

回答2

0

こういうことであってるんでしょうか?
'タイトル等の始めの文章'や'後書きの終わりの文章'もforの中で取得される?

python

1str1 = '' 2str2 = '' 3l = [] 4for urls,imgs,titles in zip(url,img,title): 5 s = 'html文' + urls.get('href') + imgs.get('src') + str(titles.find("a")) + 'html文\n' 6 str1 = 'タイトル等の始めの文章' 7 str2 = '後書きの終わりの文章' 8 l.append(str(s)) 9 10print(str1 + '\n'.join(l) + str2)

投稿2019/08/19 06:18

yamap55

総合スコア1376

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

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

mochihi

2019/08/19 06:41

回答ありがとうございますこちらも上手く動いてくれました。理解しやすいように書いて頂いたのでので勉強に役立ちます!
guest

0

ベストアンサー

python

1print("タイトル等の始めの文章") 2for urls,imgs,titles in zip(url,img,title): 3 s = 'html文' + urls.get('href') + imgs.get('src') + str(titles.find("a")) + 'html文\n' 4 print(s) 5print("後書きの終わりの文章")

コメントを受けて

これでいいんでしょうか。

python

1ss = "タイトル等の始めの文章\n" 2for urls,imgs,titles in zip(url,img,title): 3 s = 'html文' + urls.get('href') + imgs.get('src') + str(titles.find("a")) + 'html文\n' 4 ss += s 5ss += "後書きの終わりの文章"

パフォーマンス上有利な方法。

python

1lst = ["タイトル等の始めの文章"] 2for urls,imgs,titles in zip(url,img,title): 3 s = 'html文' + urls.get('href') + imgs.get('src') + str(titles.find("a")) + 'html文' 4 lst.append(s) 5lst.append("後書きの終わりの文章") 6s = "\n".join(lst) 7

投稿2019/08/19 06:15

編集2019/08/19 06:25
hayataka2049

総合スコア30933

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

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

mochihi

2019/08/19 06:21

回答ありがとうございます。テキストとして出力するのに困っているので一度"s"に全てまとめたいのですが可能でしょうか。
mochihi

2019/08/19 06:39

ありがとうございます!思い通りに動きました。パフォーマンス上有利な回答も助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問