以前的解决方案不起作用:TypeError:'str'对象不可调用

时间:2018-05-22 22:54:55

标签: python xml urllib

我知道有类似的错误已被报道,但我检查了所有在线解决方案,但没有一个有效。所以我决定开一个新帖子。 我从在线课程运行以下代码。它可以工作,但是,它在我的机器上运行时总是报告以下错误:

----> 7     input_str = input('Enter location: ')
TypeError: 'str' object is not callable

以下是整个代码块:

import urllib.request, urllib.parse, urllib.error
import xml.etree.ElementTree as ET

serviceurl = 'http://maps.googleapis.com/maps/api/geocode/xml?'

while True:
    input_str = input('Enter location: ')
    if len(input_str) < 1: break

    url = serviceurl + urllib.parse.urlencode({'address': input_str})
    print('Retrieving', url)
    uh = urllib.request.urlopen(url)
    data = uh.read()
    print('Retrieved', len(data), 'characters')
    print(data.decode())
    tree = ET.fromstring(data)

    results = tree.findall('result')
    lat = results[0].find('geometry').find('location').find('lat').text
    lng = results[0].find('geometry').find('location').find('lng').text
    location = results[0].find('formatted_address').text

    print('lat', lat, 'lng', lng)
    print(location)

提前致谢!

3 个答案:

答案 0 :(得分:3)

您通过执行这样的,将内置函数input重新定义为代码中的某个字符串 (不一定在已发布的代码片段中) :

input = ....

只有一种方法可以解决此错误:关闭Python解释器并重新启动它。确保您执行的任何代码不包含input的赋值或任何其他引用内置函数的标识符。

答案 1 :(得分:-4)

您是否尝试重命名变量?而不是input_str,尝试类似user_input。我非常确定'str'是在Python中保留的,所以将它用作变量是行不通的。

答案 2 :(得分:-4)

我看到你试图在“input_str”中输入一个字符串。你有没试过?:

input_str = raw_input('Enter location: ')

此类方法接收字符串作为输入。方法“input”的输入必须是数字

问候!