2015-02-11 75 views
-2

我有一个看起来像这样的输入文件的长度:的Python:返回一个字符串

ADD R0, R0, R2   
PUTS      

HALT 

MSG1   .STRINGZ "Hello Hello" 
MEMORYSPACE .BLKW  9 
NEWLINE  .FILL  #10 
NEG48   .FILl  #-48 

我需要返回.STRINGZ前面的字符串的长度(通常我不知道是什么该字符串是但这是一个例子。)我的字符串有11个字符,但我的代码返回17,我不明白为什么。谁能帮忙?这是我的代码:

for line in f: 
    if STRINGZ_ in line: 
     string_len = 0 
     stringz_ = line.split(STRINGZ_)[1] 
     print (stringz_) 
     string_len = len(stringz_) 
     print ('len(stringz_): ' + str(string_len)) 
+2

地带的空间和换行符:'stringz_ = line.split(STRINGZ _)[1] .strip()' – 2015-02-11 23:15:43

+1

你打印字符串时看到的是什么?为了清晰起见,在它周围加上'['..']'' – usr2564301 2015-02-11 23:16:05

+0

@AshwiniChaudhary谢谢你解决了它! – Chalupa 2015-02-11 23:21:27

回答

0

是的!也许你需要删除空格

text = ' hello worldss  ' 
text = text.strip() 
print len(text) 
# Return 13 
0

随着代码它被张贴由split返回列表如下所示:

['msg1     ', ' "Hello Hello"'] 

所以,你有额外的空格。代替添加另一种方法的脚本和条带化它可以通过“'只是分裂

for line in f: 
    if STRINGZ_ in line: 
     string_len = 0 
     stringz_ = line.split('"')[1] 
+0

Hiya,这可能很好的解决了这个问题......但它会很好如果你可以编辑你的答案,并提供一些关于它的工作方式和原因的一些解释:)不要忘了 - 堆栈溢出中有一堆新手,他们可以从你的专业知识中学到一两件事 - 你可能会明白什么对他们不是这样。 – 2015-02-12 06:15:52