我有一个LibreOffice Calc电子表格,需要从每行的单元格中提取一个小字符串。单元格包含大约一段文字,看起来类似于下面但都有不同的单词,长度等。一个常见的事实是我需要提取的文本的格式,在这种情况下def f(group):
return pd.DataFrame([{'num_Countries': group.Country.count(),
'mean': group.mean().mean()}])
grouped = df.groupby('Continent')
result = grouped.apply(f).reset_index(level=1, drop=True)
但是可以是24h格式的任何日期/时间格式。
Lorem Ipsum只是打印和排版的虚拟文本 行业。 Lorem Ipsum一直是
17/11/2016 09:00
行业 标准的虚拟文本自16世纪以来,当一个未知的打印机采取 一个类型的厨房,并争先恐后地制作一个类型的样本书。
我搜索了以下网站,但无法将它们连接在一起工作甚至匹配,更不用说提取实际字符串了。
http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5
有人能指出我正确的方向吗?
答案 0 :(得分:1)
公式:
=MID(A1,SEARCH("[:digit:]{2}/[:digit:]{2}/[:digit:]{4} [:digit:]{2}:[:digit:]{2}",A1,1),16)
结果:
17/11/2016 09:00
解释:
A1
是包含文字的单元格。[:digit:]{2}
查找两位数字。语法位于https://help.libreoffice.org/Common/List_of_Regular_Expressions。/
查找字面斜杠,空格(
)和冒号:
也是如此。1
开始查看开头。16
是要抓取的文字的长度。要使其正常工作,请确保在工具中启用正则表达式 - >选项 - > LibreOffice Calc - >计算 - > Enable regular expressions in formulas
。
答案 1 :(得分:0)
一种替代但类似的方法,不需要公式并返回日期/时间索引而不是文本是使用查找来查找和替换(编辑菜单):
(.*)([0-9]{2}/[0-9]{2}/[0-9]{4} [0-9]{2}:[0-9]{2})(.*)
并检查Regular expressions
下的Other options
。
有三个(组):我们想要的任何东西,我们想要的东西以及我们想要的任何东西,而且替换只是第二个捕获组,所以对于替换使用:
$2
匹配的模式是任意数字字符{2}
[0-9]
后跟/
,另外两个数字和正斜杠,四个数字,空格,另外两个数字{{1} 1}}和两个数字。
如果数据在ColumnA中,则查找/替换可能位于ColumnB中的副本上,以保留源数据。