如何在使用正则表达式和xlrd模块Python时删除奇怪的字符

时间:2018-02-05 06:23:35

标签: python regex xlrd

我正在尝试使用xlrd模块读取excel文件的第二列。但问题是第二列也有空行。我只需要选择值而不是行。以下是我的代码:

import xlrd
import sys
import re

workbook_name = sys.argv[1]
if workbook_name:
    book = xlrd.open_workbook(workbook_name)
    for sheet in book.sheet_names():
        if re.search(r'Munich',sheet):
            sh = book.sheet_by_name(sheet)
            #num_cols = sh.ncols
            for row_ids in range(0,sh.nrows):
                cell_obj = str(sh.cell(row_ids,1))
                blank_regex = re.compile(r'u\'\'')
                if not re.search(blank_regex,cell_obj):
                    #re.sub('^.+u'()',\1,cell_obj)
                    print(cell_obj)
else:
    print ("Please supply workbook_name")

当我得到输出时,这就是我得到的:

text:u'Dom0'
text:u'muclgd0008.dedc2.cloud.com'
text:u'muclgd0007.dedc2.cloud.com'
text:u'muclgd0006.dedc2.cloud.com'
text:u'muclgd0005.dedc2.cloud.com'
text:u'muclgd0004.dedc2.cloud.com'
text:u'muclgd0003.dedc2.cloud.com'
text:u'Dom0'
text:u'muclmx0032.dedc2.cloud.com'
text:u'muclmx0031.dedc2.cloud.com'
text:u'muclmx0030.dedc2.cloud.com'
text:u'muclmx0029.dedc2.cloud.com'
text:u'muclmx0028.dedc2.cloud.com'
text:u'muclmx0027.dedc2.cloud.com'
text:u'muclmx0026.dedc2.cloud.com'
text:u'muclmx0025.dedc2.cloud.com'
text:u'muclgp0002.dedc2.cloud.com'
text:u'muclgp0001.dedc2.cloud.com'
text:u'Hardware Device'
text:u'Exadata X2-2 Quater Rack'
text:u'Exadata X2-2 Quater Rack'
text:u'ZFS Filer'
text:u'BDA'

我不知道为什么这个奇怪的文字:你刚才开始。这些字符在excel表中没有。

有人可以指导我如何删除它。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你得到了u,因为你正在使用Python 2,并且你得到了引号,因为你正在打印出“单元格对象”(你隐式转换为它的“repr”),而不是它的价值。使用sh.cell_value()代替str(sh.cell())

一旦你这样做,你可以只删除空格并检查结果是否为非空:

if cell_text.strip():
    print(cell_text)