2014-03-03 119 views
0

我正在使用xlrd將xls單元格讀入字符串,之後沒有字符串函數在該字符串上工作。字符串操作無法在python字符串上工作

attribute_name = str(worksheet.cell_value(row,col)) 
attribute_name.strip() 
attribute_name.lower() 
print len(attribute_name) 
if(len(attribute_name) > 8): 
    print 'value' + str(ord(attribute_name[8])) 
    print 'attributename:'+attribute_name+':' 

打印:

9 
value32 
attributename:TSA01_HE : 
9 
value32 
attributename:TSA02_HE : 

我主要興趣在屬性名的末尾擺脫空白。我錯過了什麼明顯的?我試過替換等,但你可以看到,即使.lower()不起作用。

$蟒蛇--version 的Python 2.7.5

回答

2

striplower不工作不到位;他們返回更改的值。所以你應該把他們的結果分配給舊的變量。

attribute_name = attribute_name.strip().lower() 
0

照顧兩個strip()lower()不修改應用它們串;你應該做attribute_name = attribute_name.strip().lower()

例子:

>>> a = ' A ' 
>>> a.strip().lower() 
'a' 
>>> a 
' A ' 
+0

謝謝你,工作。我知道那裏有一個菜鳥的錯誤! – Kumi

2

方法,如str.XXX總是返回,而不是編輯原始字符串新的字符串。這是因爲字符串在python中是不可變的。如果你想在一個字符串的操作生效,永遠記住結果與=分配回

In [755]: s='a' 

In [756]: id(s) 
Out[756]: 30887376 

In [757]: s+='bc' #same as s=s+'bc' 

In [758]: id(s) #identity of the variable has been changed 
Out[758]: 301145192 

這樣:同樣,像+=串運營商重新綁定變量到一個新的字符串爲好。

int S,float S,tuple S,frozenset S以外immutables的工作方式相同str秒。例如,你不會指望i=3; i.__add__(10)使得i==13