– 汉字转拼音问题 –

其实,这个问题就是对每个字找到它的拼音,然后合并起来的问题——当然,这个不能解决多音字的问题。

那么,首先,我们得找到汉字拼音对照表,下面是我找到的一个(下载链接见文末):

汉语拼音转换器在线_文字汉语拼音转换_汉语拼音转换

– 【一】简单直观解法 –

– 1 –

导入文本文件

汉语拼音转换_文字汉语拼音转换_汉语拼音转换器在线

– 2 –

按逗号将文本文件拆分到行

做成对照表

也可以直接做成Excel表导入

汉语拼音转换器在线_汉语拼音转换_文字汉语拼音转换

– 3 –

拆解出汉字列

汉语拼音转换器在线_文字汉语拼音转换_汉语拼音转换

– 4 –

拆解出拼音列

文字汉语拼音转换_汉语拼音转换_汉语拼音转换器在线

– 5 –

对需要转换的汉字写转换公式

或将汉字分列成表后做合并查询

= Text.Combine(
       List.Transform(
           Text.ToList(待转换汉字),
           (c)=>Table.SelectRows(
                   对照,
                   (t)=>t[汉字]=c
               ){0}[拼音]
       ),
       " "
   )

思路:

1)将待转换汉字拆成列表;

2)通过List.Transform函数实现对汉字列表的转换(通过Table.SelectRows函数针对每个汉字到对照表里找对应的拼音);

3)对转换好的拼音用Text.Combine函数再加空格连到一起。

-【二】直接筛选替换法 –

方法【一】的过程相对比较常规,比较适合一步步的进行操作,然后写一个相对简单的公式来完成。但总体来说步骤比较多,而且效率比较低(即使将对照表进行缓存,运行仍比较慢)。所以,考虑换个解法。

– 1 –

直接读文本内容并拆成列表缓存

lst = List.Buffer(
       Text.Split(
          Text.FromBinary(
              File.Contents("D:汉字拼音对照.txt"),
              936
          ),
          ","
       )
    )

思路:

1)从文本文件中读取内容;

2)用Text.Split函数将文本内容按逗号拆成列表;

3)用函数List.Buffer将列表缓存。

– 2 –

写公式直接从列表中筛选

在结果中直接替换掉汉字

拼音 = Text.Combine(
       List.Transform(
           Text.ToList(待转换汉字),
           (c)=>Text.Replace(
               List.Select(
                   lst,
                   (s)=>Text.StartsWith(s,c)
               ){0},
               c,
               ""
           )
       ),
       " "
   )

思路:

1)用Text.ToList将待转换的汉字拆成列表;

2)用List.Transform函数对汉字列表进行转换(通过List.Select函数筛选出汉字拼音对照列表中开头为需要转换汉字的内容,并用Text.Replace函数删除该汉字);

3)用Text.Combine函数将拼音合并。

– 再哆嗦一下 –

这些公式因为通过换行缩进处理,所以看起来很长很复杂,但是,如果理解了Power Query里的数据结构以及函数内部参数的传递方法,实际上是不难的,因为其中并没有太多烧脑的技巧。

所以,无论是在前期的文章中,还是现在的视频课程里,我一再强调这几个很重要的内容:

– 汉字拼音对照文件下载链接 –

———END———

限 时 特 惠: 本站每日持续更新海量各大最新【内部创业教程】,一年会员只需 98 元,全站资源免费下载 点击查看详情

站 长 微 信: webprojs_com

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注