使用Python进行字符转换(如tr命令)
有没有一种方法可以使用Python进行字符翻译/音译(有点像使用Python进行字符转换(如tr命令),python,perl,Python,Perl,有没有一种方法可以使用Python进行字符翻译/音译(有点像tr命令) Perl中的一些示例如下: my$string=“一些字段”; $string=~tr/dies/eaid/; 打印$string;#多米失败了 $string='猫坐在垫子上'; $string=~tr/a-z/b/d; 打印“$string\n”#b。(因为选项“d”用于删除未替换的字符) 请参见 请注意文档对unicode字符串翻译中的细微之处的评论 对于Python 3,您可以直接使用: 翻译(str.maketra
tr
命令)
Perl中的一些示例如下:
my$string=“一些字段”;
$string=~tr/dies/eaid/;
打印$string;#多米失败了
$string='猫坐在垫子上';
$string=~tr/a-z/b/d;
打印“$string\n”#b。(因为选项“d”用于删除未替换的字符)
请参见
请注意文档对unicode字符串翻译中的细微之处的评论
对于Python 3,您可以直接使用:
翻译(str.maketrans(“abc”,“def”))
< >编辑:由于代码> TR 更高级,也考虑使用<代码> Re.Sub <代码> .< /P> < P>如果您使用Python 3翻译,则不那么冗长:
>>> 'abc'.translate(str.maketrans('ac','xy'))
'xby'
啊。。还有相当于tr-d:
>>> "abc".translate(str.maketrans('','','b'))
'ac'
对于带有python2.x的tr-d
,请使用附加参数来转换函数:
>>> "abc".translate(None, 'b')
'ac'
更简单的方法可能是使用替换。e、 g
"abc".replace("abc", "def")
'def'
不需要进口任何东西。适用于Python 2.x在Python 2中,
unicode.translate()
接受普通映射,即不需要导入任何内容:
>>> u'abc+-'.translate({ord('+'): u'-', ord('-'): u'+', ord('b'): None})
u'ac-+'
translate()
方法对于交换字符(如上面的“+”和“-”)特别有用,这是用replace()
无法完成的,使用re.sub()
也不是很简单
但是,我必须承认,重复使用
ord()
并不能使代码看起来整洁美观。我开发了python tr,实现了tr算法。
让我们试试看
安装:
$ pip install python-tr
例如:
>>> from tr import tr
>>> tr('bn', 'cr', 'bunny')
'curry'
>>> tr('n', '', 'bunny', 'd')
'buy'
>>> tr('n', 'u', 'bunny', 'c')
'uunnu'
>>> tr('n', '', 'bunny', 's')
'buny'
>>> tr('bn', '', 'bunny', 'cd')
'bnn'
>>> tr('bn', 'cr', 'bunny', 'cs')
'brnnr'
>>> tr('bn', 'cr', 'bunny', 'ds')
'uy'
- 我们先绘制一张地图,然后逐字翻译。使用get for dictionary时,第二个参数指定如果找不到任何内容,将返回什么
它可以很容易地转移到单独的功能。大多数情况下应该是非常有效的
def变速箱(斯特林、旧、新):
断言len(旧)==len(新)
trans=dict(zip(列表(旧)、列表(新)))
res=”“.加入([trans.get(i,i)for i in strin])
返回res
>>>transy(“abcd”、“abc”、“xyz”)
“xyzd”
它在python3中也可以工作,但不能满足OP的要求。将cb
转换为wt
应该将COBLE
转换为wattage
对于python3,'module'对象没有属性“maketrans”
。使用“abc”。直接翻译(str.maketrans(“abc”,“def”))
!tr-cd
是否有一个等价物?对于一个Perl人来说,称之为翻译——而不是音译——会让找到正确的事情变得更复杂。对我来说,最简单的是a。我已经做到了。
>>> from tr import tr
>>> tr('bn', 'cr', 'bunny')
'curry'
>>> tr('n', '', 'bunny', 'd')
'buy'
>>> tr('n', 'u', 'bunny', 'c')
'uunnu'
>>> tr('n', '', 'bunny', 's')
'buny'
>>> tr('bn', '', 'bunny', 'cd')
'bnn'
>>> tr('bn', 'cr', 'bunny', 'cs')
'brnnr'
>>> tr('bn', 'cr', 'bunny', 'ds')
'uy'