使用 importxml 和 substring-after 提取子字符串
Extract substring using importxml and substring-after
使用 Google sheet 'ImportXML',我能够使用以下方法从 url(在单元格 A2 中)中提取以下数据:
=IMPORTXML(A2,"//a/@href[substring-after(., 'AGX:')]").
数据:
/vector/AGX:5WH
/vector/AGX:Z74
/vector/AGX:C52
/vector/AGX:A27
/vector/AGX:C6L
但是,我想提取“/vector/AGX:”之后的代码。代码不固定为3个字母,行数也不固定
我用了=INDEX(SPLIT(AP2,"/,'vector',':'"),1,2)
。但它只适用于一行数据。必须将 index+split 函数复制到整个列,并且必须插入一个额外的列来存储代码。
5WH
Z74
C52
A27
C6L
但是,我希望能够在 AGX 之后提取代码:一次性使用 ImportXML。有办法吗?
解决方案
您的问题在于如何实施 index 公式。第一个参数 return 是行(在你的例子中是每个元素),第二个参数是列(在你的例子中是 AGX
或之后的代码)。
如果我们不是获取单个单元格,而是将此公式应用于一个范围并且我们没有为该行设置任何值,则该公式将 return 所有值实现您的目标。这是它的实现 (其中 F1:F5
将是您希望应用此公式的值范围) :
=INDEX(SPLIT(F1:F5,"/,'vector',':'"),,2)
如果您对仅使用 IMPORTXML
和 XPATH
的解决方案感兴趣,根据 the documentation,您可以使用 substring,如下所示:
=IMPORTXML(A1,"//a/@href[substring-after(.,'SGX:')]")
这样做的缺点是它会 return 完整的字符串,而不仅仅是 SGX:
之后的内容,这意味着您需要使用 Google sheet 拆分这个的公式。这是我完全使用 XPath 取得的最大成就。在 XML 中应用 forEach
会更容易,实际上 select 在 :
之后是什么,但我相信 sheets 如果不是不可能的话会更复杂只使用 XPath。
希望对您有所帮助。让我知道您是否需要其他任何东西或者您不明白什么。 :)
使用 Google sheet 'ImportXML',我能够使用以下方法从 url(在单元格 A2 中)中提取以下数据:
=IMPORTXML(A2,"//a/@href[substring-after(., 'AGX:')]").
数据:
/vector/AGX:5WH
/vector/AGX:Z74
/vector/AGX:C52
/vector/AGX:A27
/vector/AGX:C6L
但是,我想提取“/vector/AGX:”之后的代码。代码不固定为3个字母,行数也不固定
我用了=INDEX(SPLIT(AP2,"/,'vector',':'"),1,2)
。但它只适用于一行数据。必须将 index+split 函数复制到整个列,并且必须插入一个额外的列来存储代码。
5WH
Z74
C52
A27
C6L
但是,我希望能够在 AGX 之后提取代码:一次性使用 ImportXML。有办法吗?
解决方案
您的问题在于如何实施 index 公式。第一个参数 return 是行(在你的例子中是每个元素),第二个参数是列(在你的例子中是 AGX
或之后的代码)。
如果我们不是获取单个单元格,而是将此公式应用于一个范围并且我们没有为该行设置任何值,则该公式将 return 所有值实现您的目标。这是它的实现 (其中 F1:F5
将是您希望应用此公式的值范围) :
=INDEX(SPLIT(F1:F5,"/,'vector',':'"),,2)
如果您对仅使用 IMPORTXML
和 XPATH
的解决方案感兴趣,根据 the documentation,您可以使用 substring,如下所示:
=IMPORTXML(A1,"//a/@href[substring-after(.,'SGX:')]")
这样做的缺点是它会 return 完整的字符串,而不仅仅是 SGX:
之后的内容,这意味着您需要使用 Google sheet 拆分这个的公式。这是我完全使用 XPath 取得的最大成就。在 XML 中应用 forEach
会更容易,实际上 select 在 :
之后是什么,但我相信 sheets 如果不是不可能的话会更复杂只使用 XPath。
希望对您有所帮助。让我知道您是否需要其他任何东西或者您不明白什么。 :)