我会检查我的字符串是否以花括号开头{。 我尝试了以下代码。
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"
答案 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()