0

オンラインでhtmlタグからテキストを抽出するためにscrapyでXPathを使用していますが、そうすると余分な文字が添付されます。例として、<td>タグから「204」などの数値を抽出して取得しようとして[u'204']います。場合によっては、さらに悪化します。たとえば、「1 - Mathoverflow」を抽出しようとして、代わりに[u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t ']. これを防ぐ方法、または余分な文字が文字列の一部にならないように文字列をトリミングする方法はありますか? (アイテムを使用してデータを保存します)。フォーマットに関係しているように見えますが、xpath がそのようなものを取得しないようにするにはどうすればよいですか?

4

3 に答える 3

2

それが返すコードの行はどのように見えます[u'204']か?返されるのは、必要な値のUnicode文字列を含むPythonリストのようです。そこには何も問題はありません。下付き文字だけです。キャリッジリターン、ラインフィード、タブについては、Wai Yip Tungが答えたばかりのように、ストリップがそれらを取り出します。

おそらく

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()には、まさに必要な効果があります。

先頭と末尾の空白を削除し、内側の空白を 1 つの空白に置き換えます。

したがって、次を使用できます

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 に答える