在python中如何检查字符串是否以特殊符号开头?

时间:2013-11-13 09:42:46

标签: python

我会检查我的字符串是否以花括号开头{。 我尝试了以下代码。

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”}
但我的输出是:不匹配

我甚至尝试过以下但是dint得到输出

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

4 个答案:

答案 0 :(得分:6)

在切片中,结束索引是独占的。因此,self.str[:0]始终返回一个空字符串(它在第0个字符之前仅停止)。

编写该切片的正确方法是self.str[:1]

执行检查更加惯用

self.str.startswith('{')

答案 1 :(得分:0)

[:0]为您提供从字符串开头到(但不包括)第0个字符的所有内容。因此它将始终返回''(空字符串)。

您可以使用[0]代替。 (即if self.str[0] == '{')这可行,但如果self.str是空字符串,则会引发异常。

所以请尝试使用[:1],这样可以获得第一个字符(如果存在),或者如果str为空则会给你'。

另一种方法是使用if self.str.startswith('{')。即使self.string是一个空字符串,这也会做正确的事。

答案 2 :(得分:0)

您应该使用startswith方法

>>> "{a".startswith('{')
True
>>> "".startswith('{')
False
>>> "Fun".startswith('{')
False

答案 3 :(得分: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()