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

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

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

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

Q&A

解決済

2回答

1683閲覧

range内のintをstr(int)できない

cureseven

総合スコア18

Python 3.x

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

0グッド

0クリップ

投稿2018/07/24 05:45

編集2018/07/24 05:52

urlの文字列を作ろうとして試行錯誤しています.

python

1for k in range(9): 2   title2 = "https://dictionary.goo.ne.jp/srch/dialect/" + i + "/m9p" + str(k) + "u/"

とすると

TypeError: 'list' object is not callable

とエラーが出るのがなぜかわからないので教えてください.

具体的にはqiitaを参考に

python

1for j in ['1','2','3','4','5','6','7','8','9']: 2 title = "https://dictionary.goo.ne.jp/srch/dialect/" + i + "/m9p" + j + "u/"

は通るし

python

1for k in range(9): 2     title2 = "https://dictionary.goo.ne.jp/srch/dialect/" + i + "/m9p%du/" % k

は通りますがrangeを回してstr(j)して+で文字列連結するとうまくいきません.

pythonのバージョンはPython 3.7.0です.
イメージ説明

全部貼ります
イメージ説明

python

1#タイトルを引っ張てくる 2import requests,bs4 3import codecs 4import os 5import glob 6 7# トップページ 8res = requests.get('https://dictionary.goo.ne.jp/dialect/') 9res.raise_for_status() # 例外発生 10soup = bs4.BeautifulSoup(res.text, "html.parser") # HTMLを取ってくる 11elems = soup.find_all("ul",class_="list-simple-d") # 指定して取り出して来た文字列 12box = [] # ul内のもの全ての配列 13pref = [] # 都道府県名の配列 14 15for elem in elems: 16 prefname = elem.getText() 17 str = prefname.replace("¥n"," ").split() # 改行をスペースに変換した文字列 18 for w in str: 19 box.append(w) #boxにwを追加 20 if len(w) < 5: 21 pref.append(w) #prefに都道府県名を追加 22 # print(pref) 23 # print(w) 24 25for i in pref: 26 for j in ['1','2','3','4','5','6','7','8','9']: 27 title = "https://dictionary.goo.ne.jp/srch/dialect/" + i + "/m9p" + j + "u/" 28 # print(type(j)) #->str 29 # print(title) 30 for k in range(9): 31 # print(k) 32 # num = str(k) 33 # title2 = "https://dictionary.goo.ne.jp/srch/dialect/" + i + "/m9p" + str(k) + "u/" #->できない! 34 # title2 = "https://dictionary.goo.ne.jp/srch/dialect/%s/m9p%du/" % i,k 35 title2 = "https://dictionary.goo.ne.jp/srch/dialect/" + i + "/m9p%du/" % k 36 print(title2) 37 38 39print(type(range(9))) #-> range 40 # preffilename = w + '.txt' 41 # file = open(preffilename,'w') 42 # elems = soup.find_all("dt", class_="title search-ttl-a") 43 # for elem in elems: 44 # print(elem.getText()) 45 # f.write(elem.getText()) 46 # 47 # os.chdir("/test_dir/dir_A") 48 # preffilelist = glob.glob("./*") 49 # print(preffilelist) 50 # f.close 51 52 53# print(pref) 54# print(len(pref)) 55

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

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

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

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

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

KojiDoi

2018/07/24 05:48

str(k): このkは何処から来たのですか?
tachikoma

2018/07/24 05:49

strという変数を使っていそうですね。問題の個所の前にdel strとすれば通る気がするなぁ。
cureseven

2018/07/24 05:49

すみませんソースコード全部貼りました!
KojiDoi

2018/07/24 05:53

質問のコードとスナップショットが全然ちがうじゃないですか。
cureseven

2018/07/24 05:55

すみません..色々いじってました.コメントに残っていると思います
guest

回答2

0

17行目でstrという変数名をつかっているのが原因かと思います。
strはPythonの予約語なので使わないほうがよいです。

またエラーには何行目のどのコードでエラーが発生しているかという情報も含まれているので、それも参考にしてみてください。

投稿2018/07/24 05:55

crimnut

総合スコア380

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

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

cureseven

2018/07/24 05:59

ありがとうございます.予約語使ってはいけませんね.気をつけます! エラーですがtitle = の行のみ出ていたので17行目には気づきませんでした...
guest

0

ベストアンサー

17行目のコードが原因です。

Python

str = prefname.replace("¥n"," ").split()

このような分かりづらいエラーを引き起こすので、strやintといった命名は避けてください。

Python

1>>> str(1) 2'1' 3>>> str = [] 4>>> str(1) 5Traceback (most recent call last): 6 File "<stdin>", line 1, in <module> 7TypeError: 'list' object is not callable

投稿2018/07/24 05:52

編集2018/07/24 05:53
LouiS0616

総合スコア35660

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

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

cureseven

2018/07/24 05:55

なるほど,わかりました,ありがとうございます..!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問