– 汉字转拼音问题 –
其实,这个问题就是对每个字找到它的拼音,然后合并起来的问题——当然,这个不能解决多音字的问题。
那么,首先,我们得找到汉字拼音对照表,下面是我找到的一个(下载链接见文末):
– 【一】简单直观解法 –
– 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