Python2.7.11: TypeError: expected string or buffer
Python2.7.11: TypeError: expected string or buffer
我正在编写一个打开 xlsx sheet 的脚本,检查第 6 列中是否存在特定值,如果存在,则获取第 2 列的相应值。
遇到一些问题:
import openpyxl
import os
import time
import re
ws = openpyxl.load_workbook(r'C:\Users\Desktop\All_data_sheet.xlsx')
text_file = open(r'C:\Users\Desktop\Output.txt', "w")
topo_sheet =ws.get_sheet_by_name('Rational Web')
#Getting max rows and max columns in each sheet
topo_max_rows = topo_sheet.get_highest_row()
topo_max_columns = topo_sheet.get_highest_column()
for ro in range(2,topo_max_rows+1):
match = re.search(r"acl",topo_sheet.cell(row= ro , column =6).value)
if match:
text_file.write(topo_sheet.cell(row= ro , column =1).value)
text_file.close()
我收到这个错误:
Traceback (most recent call last):
File "C:\Users\Desktop\script.py", line 28, in <module>
match = re.findall(r"acl",topo_sheet.cell(row= ro , column =6).value)
File "C:\Python27\lib\re.py", line 181, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
topo_sheet.cell(row= ro , column =6).value
不是 至少一个 单元格的字符串。 Cell().value
引用的返回类型也可以是 int
、float
或 datetime
对象,请参阅 openpyxl
documentation:
Get or set the value held in the cell. :rtype:
depends on the value (string, float, int or datetime.datetime
)
始终将值转换为 unicode
字符串(这样即使特定单元格不包含文本,您也可以使用正则表达式)或测试首先生成的值的类型。
转换为 unicode 总是很容易:
match = re.search(r"acl", unicode(topo_sheet.cell(row=ro , column=6).value))
或者先测试类型(如果你只想匹配部分文本的数字或日期,这绝对是必需的):
cell = topo_sheet.cell(row=ro , column=6)
if cell.data_type == cell.TYPE_STRING:
match = re.search(r"acl", cell.value)
我正在编写一个打开 xlsx sheet 的脚本,检查第 6 列中是否存在特定值,如果存在,则获取第 2 列的相应值。 遇到一些问题:
import openpyxl
import os
import time
import re
ws = openpyxl.load_workbook(r'C:\Users\Desktop\All_data_sheet.xlsx')
text_file = open(r'C:\Users\Desktop\Output.txt', "w")
topo_sheet =ws.get_sheet_by_name('Rational Web')
#Getting max rows and max columns in each sheet
topo_max_rows = topo_sheet.get_highest_row()
topo_max_columns = topo_sheet.get_highest_column()
for ro in range(2,topo_max_rows+1):
match = re.search(r"acl",topo_sheet.cell(row= ro , column =6).value)
if match:
text_file.write(topo_sheet.cell(row= ro , column =1).value)
text_file.close()
我收到这个错误:
Traceback (most recent call last):
File "C:\Users\Desktop\script.py", line 28, in <module>
match = re.findall(r"acl",topo_sheet.cell(row= ro , column =6).value)
File "C:\Python27\lib\re.py", line 181, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
topo_sheet.cell(row= ro , column =6).value
不是 至少一个 单元格的字符串。 Cell().value
引用的返回类型也可以是 int
、float
或 datetime
对象,请参阅 openpyxl
documentation:
Get or set the value held in the cell.
:rtype:
depends on the value (string, float, int ordatetime.datetime
)
始终将值转换为 unicode
字符串(这样即使特定单元格不包含文本,您也可以使用正则表达式)或测试首先生成的值的类型。
转换为 unicode 总是很容易:
match = re.search(r"acl", unicode(topo_sheet.cell(row=ro , column=6).value))
或者先测试类型(如果你只想匹配部分文本的数字或日期,这绝对是必需的):
cell = topo_sheet.cell(row=ro , column=6)
if cell.data_type == cell.TYPE_STRING:
match = re.search(r"acl", cell.value)