python - 在 python 中使用字符串会产生奇怪的引号

标签 python xpath

目前我正在与 scrapy 合作,这是一个基于python的网络爬虫框架。使用 XPATH 从 html 中提取数据。 (我是Python新手)要包装数据scrapy使用项目,例如

item = MyItem()

item['id'] = obj.select('div[@class="id"]').extract()

当 id 像 print item['id'] 一样打印时,我得到以下输出

[u'12346']

我的问题是这个输出并不总是采用相同的形式。有时我会得到类似的输出

"[u""someText""]"

这种情况仅发生在文本中,但实际上,与像 ID 一样正确处理的其他文本相比,该文本没有什么特别之处。

有人知道引号是什么意思吗?就像我说的,someText 像所有其他文本数据一样被爬行,例如来自

<a>someText</a>

有什么想法吗?

编辑:

我的蜘蛛会爬行博客的所有页面。这是确切的输出

[u'41039'];[u'title]

[u'40942'];"[u""title""]"]

...

提取方式

item['title']   = site.select('div[@class="header"]/h2/a/@title').extract()

我注意到相同的博客文章总是带有这个引号。所以它们并不是随机出现的。但文字并没有什么特别之处。例如。该标题产生引号

<a title="Xtra Pac Telekom web'n'walk Stick Basic für 9,95" href="someURL">
    Xtra Pac Telekom web'n'walk Stick Basic für 9,95</a>

所以我的第一个想法是这是因为一些特殊字符,但实际上没有。

只有当项目写入 csv 时才会发生这种情况,当我在 cmd 中打印它们时,没有引号。

有什么想法吗?

最佳答案

python 可以使用单引号 ' 和双引号 " 作为引号。当它打印出某些内容时,它通常会选择单引号,但如果它正在打印的文本包含单引号(以避免必须转义字符串中的引号):

通常情况下,它会打印 [u'....'] 但有时您的文本包含 ' 字符,然后它会打印 [你“....”].

然后写入 csv 会出现额外的复杂情况。如果写入 csv 的字符串仅包含 ',则按原样写入。因此 [u'....'] 写为 [u'....']

但如果它包含双引号,则 (1) 所有内容都放在双引号内,并且 (2) 任何双引号都会重复两次。因此 u["..."] 写作 "[u""...""]"。如果您使用 csv 库读回 csv 数据,那么这将被检测到并删除,因此不会导致任何问题。

所以它是包含单引号的文本(使 python 使用双引号)和 csv 引用规则(适用于双引号,但不适用于单引号)的组合。

如果这是一个问题,csv 库有各种选项来更改行为 - http://docs.python.org/library/csv.html

wikipedia page更详细地解释了报价规则 - 此处的行为由 “ super ,“豪华”卡车”

示例显示

关于python - 在 python 中使用字符串会产生奇怪的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274592/

相关文章:

IDE 内和外的 Python Unicode

通过 xpath rvest 表的空列表

c# - 如何使用 XPath 和使用参数获取值?

python - 在 Python 中使用 Selenium 从部分可见的滚动框中抓取所有文本

excel - VBA - 获取标签名称的 XPath 语法是什么

xpath - 如何用jmeter测试CAS?

Python,字典到 CSV : is there a faster way to do it?

python - 如何使用opencv找到图像中所有圆圈的所有接触点

python - 值错误: I/O operation on closed file in Pyramid

python - 带有pd.grouper和Margins的Pivos Pivot_table