- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
string.maketrans("","")
给予
\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13
\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~
\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90
\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2
\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4
\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9
\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde
\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed
\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
这是什么意思?
它如何帮助通过以下调用删除字符串中的标点符号:
import string
myStr.translate(string.maketrans("",""), string.punctuation)
最佳答案
我会采取一些自由,因为 Python 2 混淆了字符串和字节的行。有 256 个字节,范围从 0 到 255。您可以使用 chr()
获取它们的字节表示。所以,从 0 到 255 的所有字节看起来像这样
>>> ''.join(map(chr, range(256)))
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\
x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;
<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80
\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93
\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6
\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9
\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc
\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf
\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2
\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
string.maketrans(from, to)
创建一个 256 个字符的字符串,其中 from
中的字符将被 to
替换。例如,string.maketrans('ab01', 'AB89')
将返回上面的字符串,但 a
将被 A
替换,b
被 B
替换,0
被 8
替换,1
被 9
替换。
>>> string.maketrans('ab01', 'AB89')
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\
x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./8923456789:;
<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABcdefghijklmnopqrstuvwxyz{|}~\x7f\x80
\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93
\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6
\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9
\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc
\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf
\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2
\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
有效地,string.maketrans('', '') == ''.join(map(chr, range(256)))
。
这用作一个映射,当提供给 str.translate()
时,它可用于通过一次传递字符串来替换多个字符。对于上面的示例 map ,所有字符都将保持不变,除了所有 a
变成 A
, b
变成 B
等等。如果你做 myStr.translate(string.maketrans('', ''))
,你只是不改变 myStr
中的任何东西。
最后, translate()
有一个额外的参数, deletechars
。如果您为该参数传递一个字符串,translate()
将根据您提供的映射转换所有字符,但它会忽略 deletechars
中的任何字符。所以,把它们放在一起,myStr.translate(string.maketrans('', ''), string.punctuation)
不会改变字符串中的任何字符,但在此过程中会忽略 string.punctuation
中的任何字符。实际上,您已经删除了输出字符串中的标点符号。
关于python - Python string.maketrans ("","") 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36464160/
我想用 ae 替换 æ 字符。我怎样才能获得它?这是我对 maketrans 和 translate 的尝试: word = 'være' letters = ('å','ø', 'æ') repla
我有这样一个函数: persian_numbers = '۱۲۳۴۵۶۷۸۹۰' english_numbers = '1234567890' arabic_numbers = '١٢٣٤٥٦٧٨٩
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visit the help center
这是我的代码。不仅在此代码中,在我导入任何模块的每个代码中,ImportError: cannot import name 'package name' 都会出现 from string import
这是 Python 2.7 中的。string.maketrans 函数应该返回一个翻译映射,它是一个恰好有 256 个字符的字符串。 为什么我用 print 命令看不到这个字符串? allchars
尝试在 Python 3.5.2 shell 中运行命令时收到以下错误: Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC
string.maketrans("","") 给予 \x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x
我一直在做一些有关此错误的先前研究。这里有一些与StackOverflow相关的解释,但是建议的解决方案却完全无关。 当我尝试从gi.repository导入Gtk时,它崩溃并显示以下输出: bash
def complement(dna): transtable = dna.maketrans('acgtnACGTN', 'tgcanTGCAN') return dna.trans
我有一个很好的小方法可以从字符串中删除控制字符。不幸的是,它在 Python 2.6 中不起作用(仅在 Python 3.1 中)。它指出: mpa = str.maketrans(dict.from
我正在使用 petl 软件包,该软件包是我在 virtulaenv 中使用 pip 和 python 3.4 安装的。当我尝试测试 petl 包是否在 python shell 中正确安装时我这样做是
在此答案中: https://stackoverflow.com/a/3269756/3225934 Paul Rubel(然后是 wjandra)像这样交错输入文本: rot13 = string.
当参数为 unicode 时,Pypy 似乎无法处理 string.maketrans(),但 CPython 可以: $ python Python 2.7.5 (default, Oct 11 2
c++11 是否提供了在 python 中实现的优雅解决方案 maketrans/translate ? from string import maketrans intab = "aeiou" ou
使用 python 2.7 我得到这个错误: Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py",
运行 python proxy.py 时出现错误 $ python proxy.py INFO - [Sep 28 14:59:19] getting appids from goagent plus
这是完整的代码: s = 'life is short, stunt it!!?' from string import punctuation tbl = str.maketrans({ord(ch
我正在编写的代码应该找到 DNA 正向和反向互补链上基因序列的所有开放阅读框 (orfs)。为了制作 DNA 的反向链,我打算使用 str.maketrans() 将互补碱基映射到彼此。 #!/usr
我在 Google AppEngine (Python SDK) 中有这段代码: from string import maketrans intab = u"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØò
[ python 2] SUB = string.maketrans("0123456789","₀₁₂₃₄₅₆₇₈₉") 此代码产生错误: ValueError: maketrans argumen
我是一名优秀的程序员,十分优秀!