Python 自定义字符串拆分算法

Python 自定义字符串拆分算法,python,algorithm,split,Python,Algorithm,Split,我正在尝试将字符拆分为一个字符串,其中包含由特殊字符组成的字母表。想法是以最合乎逻辑的方式拆分字符。 例如,如果单词是“Football”,它可以写成F{}{}tball。理想的设置应该是将其拆分为“F”、“{}”、“{}”。。。但是如果我尝试使用每个字符分割它,那么它将像'F'、'{'、'}'..一样分割,{'也像一个H,这也是一个字符,{'也像一个C. 我曾考虑过为这类符号字母定义一本词典,但它并不能解决核心问题。任何建议都将不胜感激。 我正在使用Python,需要这些字符作为字符串分析的一

我正在尝试将字符拆分为一个字符串,其中包含由特殊字符组成的字母表。想法是以最合乎逻辑的方式拆分字符。
例如,如果单词是“Football”,它可以写成F{}{}tball。理想的设置应该是将其拆分为“F”、“{}”、“{}”。。。但是如果我尝试使用每个字符分割它,那么它将像'F'、'{'、'}'..一样分割,{'也像一个H,这也是一个字符,{'也像一个C.
我曾考虑过为这类符号字母定义一本词典,但它并不能解决核心问题。任何建议都将不胜感激。

我正在使用Python,需要这些字符作为字符串分析的一部分。

您可以使用
re.split
()根据特殊字符(字符串)拆分字符串

例如:

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', 'l', ',', ' ', 'G', '()', 'a', 'l']

是的,您的第一步可能是定义允许的字符替换。您的下一个问题是编写一个解析器,可以将任何特殊字符序列转换为各种可能的翻译,这不是一个确定的过程。在这一步之后,您需要比较生成的“单词”用你可接受的词汇来找出特殊字符的用意

在数字字符串上进行这种翻译有很多解决方案,a=1,b=2,…z=26。对于这个问题,
121
可以解析为
aba
av
,或
la
。你可以采用它们的原理并将它们应用到你的问题中。一般的想法是使用一些动态编程和b你可以通过跟踪来处理形式语法中的歧义


当我做了这样限制的事情时,我使用翻译指令和对剩余字符串的递归来遍历输入;如果我向下搜索到空字符串,我就得到了一个有效的翻译;如果我在那之前卡住了,我返回失败,让回溯查找下一个选项。你也可以使用s来执行等效操作TATE转换图。

很可能是你需要的。如果它不够强大,你可以考虑许多解析库中的任何一个。你将如何决定如何将诸如<代码> OCH < /代码>之类的东西表示为<代码> {}{}。{?@wwii:在可能出现多个拆分的情况下,您可能需要生成这些多个拆分,对它们进行解释,然后过滤掉有意义的变量。如果我正确理解了您的主题区域,某些输入可能没有唯一的解释,至少在脱离上下文时不会(这是一个不同的问题)。这可能需要一个能够生成多个输出的自定义解析器,使用一些前瞻并尝试应用多个解释…啊,评论是针对OP的,但我同意你的回答。你能分享一下你提到的一些解决方案吗?