【问题标题】:Syntax error on a while as loopwhile 作为循环的语法错误
【发布时间】:2017-09-04 21:06:47
【问题描述】:

我正在尝试使用 python 2.7.13 下载一个网页并逐行分析它。从记忆和四处搜索中,我发现以下代码 sn-p 足以逐行运行:

 with s as f:
    for line in f:
        print line

变量s 由file.read() 定义,文件由urllib2 打开指定的url 定义。不幸的是,当我运行脚本时,我得到了这个语法错误:

Traceback (most recent call last):
  File "a.py", line 12, in <module>
    with s as f:
AttributeError: __exit__

老实说,我对自己做错的事情感到目瞪口呆,如果能深入了解我的错误,我将不胜感激。

【问题讨论】:

  • 哪个版本的 Python 在while 循环的条件下采用as
  • 你从哪里得到这个代码 sn-p?
  • 'as' 关键字用于导入语句和异常。在这种情况下,您应该能够使用 for line in f: 直接在文件对象上循环,而不需要 while 循环。
  • 你的错误很简单:那不是有效的 Python,我现在不知道你认为你在完成什么。
  • 我在这里找到了这个例子:stackoverflow.com/a/8010133/4415644

标签: python loops syntax


【解决方案1】:

我发现下面的代码 sn-p 一行一行就足够了:

是的,但是对于 文件对象 就像在

with open(filename) as f:
    for line in f:

变量 s 由 file.read() 定义

这是一个字符串,不能在with中使用。

并且该文件是由 urllib2 打开一个指定的 url 定义的。

这是一个类似的文件对象,但恰好是可迭代的

我正在尝试用python 2.7.13下载一个网页并逐行分析。

无法从网站的迭代行中收集到有用的信息。 (至少 (X)HTML、JSON 等)

尝试使用 BeautifulSoup 或 XPath

【讨论】:

  • 好吧,我只记得我可以用“\n”分割行,然后循环遍历列表。就像我说的,我今天很迷茫。感谢您的帮助。
  • 可以,但除非您的网站只包含多行文本,否则解析 HTML 更有意义
猜你喜欢
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多