2

文字列が中かっこ { で始まっているかどうかを確認したい。次のコードを試しました。

class parser(object):
    def __init__(self):
        self.fp=open('jsondata.txt','r')
        self.str=self.fp.read()
        print "Name of the file Opened is :",self.fp.name 
        print "Contents of the file :\n",self.str
    def rule1(self):
        var='{'
        if self.str[:0]==var:
            print "good match"
        else:
            print "No match"
obj=parser()
obj.rule1()   

ファイルには {"name":"Chuvi"}
が含まれていますが、出力は次のとおりです: 一致しません

次のことも試しましたが、出力が得られません

            if self.str[:0]=='{':
                print "good match"
            else:
                print "No match"
4

4 に答える 4

6

スライスでは、終了インデックスは排他的です。したがって、self.str[:0]常に空の文字列を返します ( 0 番目の文字の直前で停止します)

そのスライスを記述する正しい方法はself.str[:1].

チェックを実行するためのより慣用的な方法は次のとおりです。

self.str.startswith('{')
于 2013-11-13T09:43:53.200 に答える
0

[:0]文字列の先頭から 0 番目の文字まで (ただし、文字は含まない) のすべてが表示されます。したがって、常に '' (空の文字列) が返されます。

代わりに使用できます[0]。(つまりif self.str[0] == '{') これは機能しますが、self.str が空の文字列の場合は例外が発生します。

したがって[:1]、代わりに試してみてください。最初の文字が存在する場合はそれを取得し、str が空の場合は '' を取得します。

別の方法は、 を使用することif self.str.startswith('{')です。self.stringが空の文字列であっても、これは正しいことを行います。

于 2013-11-13T09:46:52.387 に答える
0

startswithメソッドを使用する必要があります

>>> "{a".startswith('{')
True
>>> "".startswith('{')
False
>>> "Fun".startswith('{')
False
于 2013-11-13T09:47:41.510 に答える