自定义字符串拆分算法

我正在尝试将字符串拆分为包含特殊字符组成的字母的字符串。想法是按照最合乎逻辑的方式分割字符。
例如。如果单词是“足球” ,则可以写为 F {} {} tball 。理想的设置应该是将其拆分为'F','{}','{}'...但是如果我尝试使用每个字符对其进行拆分,则它将像'F','{',' }'...。还有一个问题,'} {'看起来也像 H ,它也是一个字符和'{'看起来也像C。
我曾考虑过为这类符号字母定义一个词典,但它不能解决核心问题。任何建议表示赞赏。
我正在使用Python,并且需要这些字符作为字符串分析的一部分。

qq58616 回答:自定义字符串拆分算法

您可以使用re.splitdocs)根据特殊字符(字符串)分割字符串。

例如:

s = 'F{}{}tball,G()al'

import re

split_chars = ['{}','()']

print([ch for ch in re.split('(' + '|'.join(re.escape(ch) for ch in split_chars) + '|.)',s) if ch])

打印:

['F','{}','t','b','a','l',',' ','G','()','l']
,

是的,第一步可能是定义允许的字符替换。下一个问题是编写一个解析器,该解析器可以将特殊字符的任何序列转换为各种可能的翻译,这不是确定性的过程。完成此步骤后,您需要将生成的“单词”与可接受的词典进行比较,以找出特殊字符要使用的单词。

有许多解决方案可用于对数字字符串进行此转换,其中a = 1,b = 2,... z = 26。有了这个问题,121可以解析为abaavla。您可以采纳他们的原则,并将其应用于您的问题。总体思路是使用一些动态编程和回溯功能来处理形式语法中的歧义。

当我做了一些限制时,我用了一个翻译字典,然后对剩下的字符串进行递归以遍历输入。如果我处理到空字符串,我有一个有效的翻译;如果在此之前被卡住,我将返回失败并让回溯查找下一个选项。您还可以使用状态转换图进行等效操作。

本文链接:https://www.f2er.com/2940112.html

大家都在问