Excel / XLS - 过滤数据(使用正则表达式)并将其转换为新单元格(可能使用 openrefine?)
Excel / XLS - filter data (with regex) and transform it to new cells (Possible with openrefine?)
我遇到了一个问题。我不是 Excel 专家。
我在 Excel 中找到了一些如何使用正则表达式的帖子,例如:
- How to use Regular Expressions (Regex) in Microsoft Excel both in-cell and loops
但我不知道如何将数据源中的一些内容过滤到新创建的列中。
示例:
数据源主要是HTML-一个单元格中的源代码。
我构建了用于匹配 links (ahref)、youtube、facebook 视频、infogr.am links 和其他内容的正则表达式。
我想:
Extract/filter link 从 html 到新列,例如:
新专栏"Links"
<a href="url">link text</a> \n
<a href="url">link text</a> \n
(每个过滤 link 单元格中的一个新行)
可选:在其旁边粘贴另一列,计算 paragraphs/links(计算行数)。
然后是视频 links(每过滤数据一行)+ 可选计数列。
以此类推
我找到了 Openrefine。这看起来非常好和专业。但是我在那里没有找到如何做。
我不必使用 Excel,稍后结果可以转换为 *.csv - 它将是数据库的数据。
虽然我认为 Excel 对于第一步来说很好,作为可选的计数段落。
要从 HTML 创建一个新列,每个链接都在同一单元格中,用换行符分隔:
forEach(value.parseHtml().select('a'), e, e).join('\n')
你应该看到这样的东西:
或者如果您只需要链接的文本:
forEach(value.parseHtml().select('a'), e, e.htmlText()).join('\n')
或者,如果您只需要网址:
forEach(value.parseHtml().select('a'), e, e.htmlAttr('href')).join('\n')
要从计算链接数的 HTML 创建一个新列:
forEach(value.parseHtml().select('a'), e, e).length()
您的示例中没有图片或视频,因此我无法向您展示如何找到它们。要提取 infogr.am 链接:
forEach(value.parseHtml().select('iframe[src*=infogr.am]'), e, e.htmlAttr('src')).join('\n')
OpenRefine 使用 JSoup selectors,与 CSS 选择器非常相似。只需在 .select()
函数中使用正确的选择器。
我遇到了一个问题。我不是 Excel 专家。
我在 Excel 中找到了一些如何使用正则表达式的帖子,例如:
- How to use Regular Expressions (Regex) in Microsoft Excel both in-cell and loops
但我不知道如何将数据源中的一些内容过滤到新创建的列中。
示例:
数据源主要是HTML-一个单元格中的源代码。
我构建了用于匹配 links (ahref)、youtube、facebook 视频、infogr.am links 和其他内容的正则表达式。
我想:
Extract/filter link 从 html 到新列,例如:
新专栏"Links"
<a href="url">link text</a> \n
<a href="url">link text</a> \n
(每个过滤 link 单元格中的一个新行)
可选:在其旁边粘贴另一列,计算 paragraphs/links(计算行数)。
然后是视频 links(每过滤数据一行)+ 可选计数列。
以此类推
我找到了 Openrefine。这看起来非常好和专业。但是我在那里没有找到如何做。
我不必使用 Excel,稍后结果可以转换为 *.csv - 它将是数据库的数据。
虽然我认为 Excel 对于第一步来说很好,作为可选的计数段落。
要从 HTML 创建一个新列,每个链接都在同一单元格中,用换行符分隔:
forEach(value.parseHtml().select('a'), e, e).join('\n')
你应该看到这样的东西:
或者如果您只需要链接的文本:
forEach(value.parseHtml().select('a'), e, e.htmlText()).join('\n')
或者,如果您只需要网址:
forEach(value.parseHtml().select('a'), e, e.htmlAttr('href')).join('\n')
要从计算链接数的 HTML 创建一个新列:
forEach(value.parseHtml().select('a'), e, e).length()
您的示例中没有图片或视频,因此我无法向您展示如何找到它们。要提取 infogr.am 链接:
forEach(value.parseHtml().select('iframe[src*=infogr.am]'), e, e.htmlAttr('src')).join('\n')
OpenRefine 使用 JSoup selectors,与 CSS 选择器非常相似。只需在 .select()
函数中使用正确的选择器。