我一直在使用 XPath 和 scrapy 从在线的 html 标签中提取文本,但是当我这样做时,我会附加额外的字符。一个示例是尝试从<td>
标签中提取数字,例如“204”并获取[u'204']
. 在某些情况下,情况要糟糕得多。例如尝试提取“1 - Mathoverflow”而不是获取[u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t ']
. 有没有办法防止这种情况发生,或者修剪字符串以使多余的字符不是字符串的一部分?(使用项目来存储数据)。看起来它与格式化有关,那么我如何让 xpath 不拾取那些东西呢?
问问题
2949 次
3 回答
2
返回的代码行是什么样的[u'204']
?看起来返回的是一个 Python 列表,其中包含一个带有您想要的值的 unicode 字符串。那里什么都没有——只是下标。至于回车、换行和制表符,就像伟业东刚刚回答的那样,strip 会把它们拿出来。
大概
my_answer = item1['Title'][0].strip()
或者,如果您期待几场比赛
for ans_i in item1['Title']:
do_something_with( ans_i.strip() )
于 2010-05-25T23:00:46.993 回答
2
标准的 XPath 函数normalize-space()
正是想要的效果。
它删除前导和尾随空白,并仅用一个空格替换任何内部空白。
所以,你可以使用:
normalize-space(someExpression)
于 2010-05-25T23:17:02.093 回答
1
使用 strip() 删除前导和尾随空格。
>>> u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t '.strip()
u'1 \u2013 MathOverflow'
于 2010-05-25T22:51:27.327 回答