文本提取: [爬 (无)](http://xxx/) 怎样提取出 [] 内容和 () 内容

Power Query wgf4242 ⋅ 于 2019-12-25 15:17:39 ⋅ 最后回复由 geyee 2019-12-25 23:56:25 ⋅ 2223 阅读

List a b
[爬(无)](http://xxx/) 爬(无) http://xxx/

大概这个效果吧。。

file
附件: https://www.lanzous.com/i89bvod
我的图里面有个()没处理好。求好方法吧

成为第一个点赞的人吧 :bowtie:
回复数量: 3
  • geyee
    2019-12-25 17:01:37

    Text.BetweenDelimiters 设定可选参数即可。该例暂未使用正则、Text.Remove。

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Win66ffnzKSuebl/6tHX7+z09zzq7n3V1gcipM5/sXfC0cdbT9l0vV894umT5kx1dz2e1pCQWZyTlJxalvFy57+XKbS86NsZqZJSUFFjp65eXl+uV5JeWZCbm6yXn5+pnlqTm6puZmxtbmphZmJuYGFsYWBoamRvpayrF6gCtft6x5sXM1c+6GoBueL9n1vNVjc8XbHna2ft89fqn/b0vNjS/WD9V49n0BS9nTkhJTSpNT08t0iRomaGRmaWxgaGxhYWhhZGBkQHIslgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [List = _t]),
        源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
        更改的类型 = Table.TransformColumnTypes(源,{{"List", type text}}),
        自定义1 = Table.TransformColumns(源, {"List", each [a=Text.BetweenDelimiters(_,"[","](",{0, RelativePosition.FromStart}),b=Text.BetweenDelimiters(_,"](",")", {0, RelativePosition.FromEnd},0)]}),
        #"展开的“List”" = Table.ExpandRecordColumn(自定义1, "List", {"a", "b"}, {"a", "b"})
    in
        #"展开的“List”"
  • wgf4242
    2019-12-25 20:40:33
    each [a=Text.BetweenDelimiters(_,"[","](",{0, RelativePosition.FromStart}),b=Text.BetweenDelimiters(_,"](",")", {0, RelativePosition.FromEnd},0)]}),

    {0, RelativePosition.FromStart} 这里什么意思,我试了下去掉也不影响结果。能解释下么,参数是index。我以为是个数值,这里{}是个列表么?
    RelativePosition.FromStart 我看了文档没明白什么作用。

  • geyee
    2019-12-25 23:56:25

    @wgf4242 索引既可以是0,也可以是{0, RelativePosition.FromStart},还可以是{0, 0},其中第2个0对应RelativePosition.FromStart(1则对应RelativePosition.FromEnd),第一个0自然是索引。RelativePosition.FromStart或0是从左到右数,RelativePosition.FromEnd或1是从右到左数。Text.BetweenDelimiters共5个参数,最后两个参数为可选(索引)参数。索引参数可以选择数值,或者适当两个元素的list,或者为空(无后一参数的情况下)。若参数为0,则表示从左向右数第1个对应符号(左括号或右括号)的位置,为1,则表示第2个对应符号的位置。若参数大于对应符号的数量减1,则可看做无穷远处,结果返回空或者截断左边的对应位置的符号后的剩余右边部分(从左向右数时)。需要注意第5参数是相对第4参数的(endIndex相对startIndex编制索引)。可以看站长的帖子Text.Before/After/BetweenDelimiter(s)或者官方的帮助验证下。解答写成list是为了实践下参数,在该例中当然可以直接去掉。

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter