使用XPath和Python(html)提取的额外字符

Extra characters Extracted with XPath and Python (html)

我一直在使用xpath和scrappy在线从HTML标记中提取文本,但当我这样做时,会附加额外的字符。一个例子是试图从

标签中提取一个数字,比如"204",然后得到[u'204']。在某些情况下,情况更糟。例如,尝试提取"1-MathOverflow",而不是获取[u'

\t\t 1 \u2013 MathOverflow

\t\t ']。有没有一种方法可以防止这种情况发生,或者修剪字符串以使多余的字符不属于字符串的一部分?(使用项存储数据)。看起来它与格式化有关系,那么如何让xpath不接受这些内容呢?


标准的xpath函数normalize-space()正好达到了预期的效果。

它删除前导和尾随的wite空间,并仅用一个空间替换任何内部空白。

因此,您可以使用:

埃多克斯1〔2〕


返回[u'204']的代码行是什么样子的?看起来返回的是一个包含您想要的值的Unicode字符串的python列表。没有什么——只是下标。至于回车、换行和制表,正如魏义东刚回答的,纸条会把它们拿出来。

可能

1
my_answer = item1['Title'][0].strip()

或者如果你期待几场比赛

1
2
for ans_i in item1['Title']:
    do_something_with( ans_i.strip() )


使用strip()删除前导空格和尾随空格。

1
2
3
4
5
6
>>> u'

\t\t 1 \u2013 MathOverflow

\t\t '
.strip()
u'1 \u2013 MathOverflow'