Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 相互替换字符串内容_Python_Replace - Fatal编程技术网

Python 相互替换字符串内容

Python 相互替换字符串内容,python,replace,Python,Replace,我有一个字符串:1x2x1x。 我需要替换所有1到2,反之亦然。所以示例行是2x11x2x。只是想知道是怎么做的。我试过了 a = "1x22x1x" b = a.replace('1', '2').replace('2', '1') print b 输出为1x1x 也许我应该忘记使用replace..?一种方法是使用某个临时字符串作为中间替换: b = a.replace('1', '@temp_replace@').replace('2', '1').replace('@temp_repl

我有一个字符串:1x2x1x。 我需要替换所有1到2,反之亦然。所以示例行是2x11x2x。只是想知道是怎么做的。我试过了

a = "1x22x1x"
b = a.replace('1', '2').replace('2', '1')
print b
输出为1x1x


也许我应该忘记使用replace..?

一种方法是使用某个临时字符串作为中间替换:

b = a.replace('1', '@temp_replace@').replace('2', '1').replace('@temp_replace@', '2')

但如果字符串已经包含
@temp\u replace@
,则此操作可能会失败。该技术也在

中描述。一种方法是使用某个临时字符串作为中间替换:

b = a.replace('1', '@temp_replace@').replace('2', '1').replace('@temp_replace@', '2')

但如果字符串已经包含
@temp\u replace@
,则此操作可能会失败。这项技术在中也有介绍。这里有一种使用字符串的
翻译方法的方法:

>>> a = "1x22x1x"
>>> a.translate({ord('1'):'2', ord('2'):'1'})
'2x11x2x'
>>>
>>> # Just to explain
>>> help(str.translate)
Help on method_descriptor:

translate(...)
    S.translate(table) -> str

    Return a copy of the string S, where all characters have been mapped
    through the given translation table, which must be a mapping of
    Unicode ordinals to Unicode ordinals, strings, or None.
    Unmapped characters are left untouched. Characters mapped to None
    are deleted.

>>>
但是请注意,我是为Python3.x编写的。在2.x中,您需要执行以下操作:

>>> from string import maketrans
>>> a = "1x22x1x"
>>> a.translate(maketrans('12', '21'))
'2x11x2x'
>>>

最后,重要的是要记住,
translate
方法用于将字符与其他字符交换。如果要交换子字符串,应使用Rohit Jain演示的
replace
方法。

以下是使用字符串的
translate
方法的一种方法:

>>> a = "1x22x1x"
>>> a.translate({ord('1'):'2', ord('2'):'1'})
'2x11x2x'
>>>
>>> # Just to explain
>>> help(str.translate)
Help on method_descriptor:

translate(...)
    S.translate(table) -> str

    Return a copy of the string S, where all characters have been mapped
    through the given translation table, which must be a mapping of
    Unicode ordinals to Unicode ordinals, strings, or None.
    Unmapped characters are left untouched. Characters mapped to None
    are deleted.

>>>
但是请注意,我是为Python3.x编写的。在2.x中,您需要执行以下操作:

>>> from string import maketrans
>>> a = "1x22x1x"
>>> a.translate(maketrans('12', '21'))
'2x11x2x'
>>>
最后,重要的是要记住,
translate
方法用于将字符与其他字符交换。如果要交换子字符串,应使用Rohit Jain演示的
replace
方法。

如果“源”都是一个字符,则可以创建一个新字符串:

>>> a = "1x22x1x"
>>> replacements = {"1": "2", "2": "1"}
>>> ''.join(replacements.get(c,c) for c in a)
'2x11x2x'
下面,使用接受默认参数的
get
方法创建一个新字符串
somedict.get(c,c)
的意思类似于
somedict[c]如果c在somedict else c
中,那么如果字符在
replacements
字典中,则使用关联值,否则只需使用字符本身。

如果“源”都是一个字符,则可以创建一个新字符串:

>>> a = "1x22x1x"
>>> replacements = {"1": "2", "2": "1"}
>>> ''.join(replacements.get(c,c) for c in a)
'2x11x2x'


下面,使用接受默认参数的
get
方法创建一个新字符串
somedict.get(c,c)
的意思类似于
somedict[c]如果c在somedict else c
中,那么如果字符在
replacements
字典中,则使用关联值,否则只需使用字符本身。

是的,这几乎没问题。输出给了我
@temp_replacex11x@temp_replacex
。所以仍然需要做一些事情。@Waldema。你确定你得到了输出吗?我得到了肯定的结果,再次检查..:还是我只是打字?@Waldema你做了3次替换吗?查看我在评论中发布的链接上的演示。哦,该死。是我打字。很抱歉是的,差不多好了。输出给了我
@temp_replacex11x@temp_replacex
。所以仍然需要做一些事情。@Waldema。你确定你得到了输出吗?我得到了肯定的结果,再次检查..:还是我只是打字?@Waldema你做了3次替换吗?查看我在评论中发布的链接上的演示。哦,该死。是我打字。很抱歉如果我们想用
xyz
替换
abc
,用
abc
替换
xyz
,这会起作用吗?这会返回一个错误:TypeError:需要一个字符缓冲区object@Waldema-很抱歉耽搁了--我很难重现您的错误。最后,我意识到您必须使用Python2.x,因为只有这样才能产生错误。我编辑了我的帖子以支持2.x。如果能听到为什么我不能让它工作,我也会很酷。。仍在学习Python,但上面的代码返回了一个错误..:索科克!现在我明白了!是的,我正在使用Python2.7.5,这是受缓慢升级的大学世界的鼓励。。英雄联盟但不管怎样,向你们大家击掌帮助了我!=))如果我们想用
xyz
替换
abc
,用
abc
替换
xyz
,这会起作用吗?这会返回一个错误:TypeError:需要一个字符缓冲区object@Waldema-很抱歉耽搁了--我很难重现您的错误。最后,我意识到您必须使用Python2.x,因为只有这样才能产生错误。我编辑了我的帖子以支持2.x。如果能听到为什么我不能让它工作,我也会很酷。。仍在学习Python,但上面的代码返回了一个错误..:索科克!现在我明白了!是的,我正在使用Python2.7.5,这是受缓慢升级的大学世界的鼓励。。英雄联盟但不管怎样,向你们大家击掌帮助了我!=))