用chararray做字符串操作,NumPy中有一个chararray
对象,可以专门用来存放字符串。chararray
是ndarray
的子类,具有专门对字符串进行操作的方法。我们将从Python的官网下载一些文本,并用chararray
中的方法对文本进行处理。相对于常规的NumPy数组,使用chararray
的优点如下。
- 用索引获取数组元素时,字符串中多余的空格会自动删除。
- 做比较运算时,字符串后端的空格会自动删除。
- 支持向量化的字符串操作,不需要使用循环语句。
具体步骤
让我们开始创建chararray
数组。
- 创建
chararray
数组。
以视图的方式,创建chararray
数组。
carray = numpy.array(html).view(numpy.chararray)
- 把TAB字符替换为空格。
使用expandtabs
函数,把TAB字符替换为空格。使用该函数时,可以通过输入参数指定TAB对应的空格数,默认值是8。
carray = carray.expandtabs(1)
- 按行分割字符串。
使用splitlines
函数,按行分割字符串。
carray = carray.splitlines()
本攻略的完整代码如下。
import urllib2
import numpy
import re
response = urllib2.urlopen('http://python.org/')
html = response.read()
html = re.sub(r'<.*?>', '', html)
carray = numpy.array(html).view(numpy.chararray)
carray = carray.expandtabs(1)
carray = carray.splitlines()
print carray
攻略小结
在本攻略中,我们实际体验了特殊类型数组chararray
类的用法。该类提供了若干向量化的字符串操作方法,也提供了便利的针对空格的默认处理。