re.split 不能正常处理来自 excel 单元格的字符串

re.split doesnt work properly with a string coming from excel cell

我有一个字符串:

05-01-2015 12:27 - KH - (KH) Igangværende - Opringning - 13-11 00:00 Fangede RLI på hans mobil. Ring igen kl. 15 19-11-2014 11:17 - KH - (KH) Igangværende - Opringning - 13-11 00:00 Gik på svarer igen og lagt besked til RLI at ringe tilbage. 12-11-2014 09:38 - KH - (KH) Igangværende - Opringning - 13-11 00:00 12-11-2014 09:32 - KH - (KH) Igangværende - Opringning - 15-10 00:00 Forsøgt RLI igen og lagt besked om han vil ringe. 14-10-2014 13:14 - KH - (KH) Igangværende - Opringning - 15-10 00:00 14-10-2014 13:10 - KH - (KH) Igangværende - Opringning - 14-10 00:00 Lagt besked til RLI at ringe 14-10-2014 13:06 - KH - (KH) Igangværende - Opringning - 14-10 00:00 test

我将这个字符串解析成多个部分,以便每个部分都以日期开头。为此,正如 中所解决的那样,我受益于正则表达式,例如:

match = re.search(r' (?=\d{2}-\d{2}-\d{4})', text)

当我在代码中直接将上面的字符串写入变量text时,没有问题。但是,如果我使用 xlrd 或其他文件从 excel 文件中的单元格中获取此文本,我将无法正确获取值。我也尝试了 encode/decode 的单元格值。但我只在 match[0] 中得到整个文本。没有拆分匹配、匹配[2] 或其他。这是我尝试从 excel 文件中获取文本的方法:

# -*- coding: utf-8 -*-
import re
import xlrd

book = xlrd.open_workbook("liste1.xlsx")

# get the first worksheet
first_sheet = book.sheet_by_index(0)

# read a cell
cell = first_sheet.cell(1,5)

text=cell.value
match = re.split(r' (?=\d{2}-\d{2}-\d{4})', text)

print match[0]

你能帮我解决这个问题吗?

提前致谢。

你试过repr(text)吗?

我通过添加一行从单元格中删除非打印字符解决了这个问题,如本 post Unwanted Character in Excel cell 中所述:

# -*- coding: utf-8 -*-
import re
import xlrd

book = xlrd.open_workbook("liste1.xlsx")

# get the first worksheet
first_sheet = book.sheet_by_index(0)

# read a cell
cell = first_sheet.cell(1,5)

text= re.sub(r"[\r\n\t\x07\x0b]", "", cell.value)
match = re.split(r' (?=\d{2}-\d{2}-\d{4})', text)

print match[0]
print match[1]
print match[2]