gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:55 25 4
gpt4 key购买 nike

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

item = MyItem()

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

当像 print item['id'] 这样打印 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, ""luxurious""truck"

示例显示

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com