我正在使用xlrd将xls单元格读入字符串,之后没有任何字符串函数可以处理该字符串。
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()都不起作用。
$ python --version Python 2.7.5
答案 0 :(得分:2)
strip
和lower
不起作用;他们返回更改的值。所以你应该把他们的结果分配给旧变量。
attribute_name = attribute_name.strip().lower()
答案 1 :(得分: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
等其他不可变项与str
s的作用相同。例如,您不会期望i=3; i.__add__(10)
生成i==13
。
答案 2 :(得分:0)
请注意strip()
和lower()
都不会修改您应用它们的字符串;因此,您应该attribute_name = attribute_name.strip().lower()
。
示例:
>>> a = ' A '
>>> a.strip().lower()
'a'
>>> a
' A '