Pep8 E501: 行太长错误

20

我从以下代码中收到错误消息E501:行太长

header, response = client.request('https://api.twitter.com/1.1/statuses   /user_timeline.json?include_entities=true&screen_name='+username+'&count=1')

但如果我以这种方式或其他方式书写:
    header, response = client.request('\
       https://api.twitter.com/1.1/statuses/user_timeline.\
           json?include_entities=true&screen_name='+username+'&count=1')

我遇到了这个错误:

ValueError: Unsupported URL             https://api.twitter.com/1.1/statuses/user_timeline            .json?include_entities=true&screen_name=username&count=1 ().

或者我会得到这个错误:
ValueError: No JSON object could be decoded

请告诉我,如何解决这个错误?


尝试跨多行连接字符串,而不是以反斜杠结束行。 - Waleed Khan
3个回答

35

如果您以这种方式分行,开头的空格将成为字符串的一部分。

请尝试以下方法:

header, response = client.request(
   'https://api.twitter.com/1.1/statuses/user_timeline.'
   'json?include_entities=true&screen_name=' + username + '&count=1')
字符串将会自动连接

谢谢,我在处理tkinter小部件参数时感到很疯狂...在阅读这篇文章之前,我无法将它们分开而不出现e501错误...现在我知道必须在打开括号后换行。 - PythonProgrammi

6

你也可以进行代码分析并忽略某些类型的错误/警告。我正在使用eclipse和Pydev。

Windows > Preferences > Pydev > Editor > Code Analysis > pycodestyle.py (pep8)

then add to arguments : --ignore=E501 

重启Eclipse,这样就可以解决这个警告了。

1
你可以在多行上构建字符串:

st='https://api.twitter.com/1.1/statuses/user_timeline.json?'
st=st+'include_entities=true&screen_name='+username+'&count=1'

header, response = client.request(st)

2
通常情况下,自动字符串连接比构建字符串模式更可取。在这种情况下,它不应该影响性能,但是Python字符串是不可变的,所以使用 strA ='foo'; strA + ='bar'strA ='foo'\n'bar' 相比,将需要大约双倍的内存和一半的速度。这只是一个一般指导方针,而非硬性规定。 - knickum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接