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]总是返回一个空字符串(它在第零个字符之前停止)。

编写该切片的正确方法是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 回答
0

您可以使用

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()   
于 2013-11-13T10:47:11.073 回答