0

これが初歩的なミスなのか、単純な愚かなのかはわかりませんが、私はこの奇妙な問題に直面しています。classifier = u"''"空であることを確認するように宣言されたユニコード文字列があります。次のコード ブロック:

if classifier: 
   # do something
else:
   # else do something else

''埋め込まれているため、elseブロックにヒットします。ソースを生成する分類子文字列を制御することはできません。

埋め込みを返すように分類器を何らかの方法で操作できる場合にのみ、''の空さを確認できますがclassifier、方法はわかりません。それが何かの助けになる場合は、 objectclassifierから収集されます。HttpRequestclassifier = request.GET.get('c', '')

編集:

classifier[1:-1]u''をチェックできるようになりました。使用できる組み込みメソッドはありますか?

とりあえずこの方法で進めます。ただし、他の高度なポインターがある場合は、投稿を開いたままにしておきます。

ありがとう、

4

3 に答える 3

1

解析方法を決定する前に、データが何を意味するのかを実際に知る必要があります。1つの例で機能するまで、ランダムにハッキングしても役に立ちません。

URL から文字列を取得すると、次のようになります。

http:///a=maven&v=1.1.0&classifier=''&ttype=pom

通常、URL が与えられた場合に行うべき正しいことは、 を呼び出してurlparse.urlparseから を呼び出すurlparse.parse_qsことqueryです。しかし、これは実際には有効な URL ではないため、ここでは役に立ちません。

これ有効な URL ですが、パスとクエリ<someurl>/a=maven&v=1.1.0&classifier=''&ttype=pomを含むものではなく、パスを含むものです。クエリを開始するにはが必要です。<someurl>/a=maven&v=1.1.0&classifier=''&ttype=pom?

さらに、クエリが正しく生成されていないことは明らかです。クエリで空の文字列を引用しないでください。何も引用しません(アンパサンドをエンティティ エスケープし、その他の特殊文字をパーセント エスケープします)。そのため、URL が文字どおり、分類子が''空の文字列ではなく分類子であることを意味しない限り、それは誤りです。

そして、それが間違っていなければ、あなたはこれらの質問をしていないでしょう.

これらの URL の生成方法を制御できる場合は、明らかにそれを修正する必要があります。それを制御できないが、少なくともそれらがどのように生成されているかを知っている場合は、それを逆にして元の値を取得するコードを書くことができます。しかし、それさえわからない場合は、推測する必要があります。

推測するには、理想的には複数の例が必要です。それらは空の文字列だけを引用していますか、それとも、たとえば、"文字、スペース、またはアンパサンドを含む文字列も引用していますか? 後者の場合は、おそらくstrip("'").

于 2013-02-02T00:16:43.683 に答える