如何让 str.translate 使用 Unicode 字符串?

2024-02-19

我有以下代码:

import string
def translate_non_alphanumerics(to_translate, translate_to='_'):
    not_letters_or_digits = u'!"#%\'()*+,-./:;<=>?@[\]^_`{|}~'
    translate_table = string.maketrans(not_letters_or_digits,
                                       translate_to
                                         *len(not_letters_or_digits))
    return to_translate.translate(translate_table)

这对于非 unicode 字符串非常有效:

>>> translate_non_alphanumerics('<foo>!')
'_foo__'

但对于 unicode 字符串失败:

>>> translate_non_alphanumerics(u'<foo>!')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in translate_non_alphanumerics
TypeError: character mapping must return integer, None or unicode

我无法理解《Unicode 对象》中关于“Unicode 对象”的段落。Python 2.6.2 文档 http://docs.python.org/library/stdtypes.html#string-methods对于 str.translate() 方法。

如何使其适用于 Unicode 字符串?


Translate 的 Unicode 版本需要 Unicode 序数的映射(您可以使用以下命令检索单个字符)ord https://docs.python.org/2/library/functions.html#ord) 到 Unicode 序数。如果你想删除字符,你映射到None.

我更改了您的函数来构建一个字典,将每个字符的序数映射到您想要翻译的内容的序数:

def translate_non_alphanumerics(to_translate, translate_to=u'_'):
    not_letters_or_digits = u'!"#%\'()*+,-./:;<=>?@[\]^_`{|}~'
    translate_table = dict((ord(char), translate_to) for char in not_letters_or_digits)
    return to_translate.translate(translate_table)

>>> translate_non_alphanumerics(u'<foo>!')
u'_foo__'

edit:事实证明,翻译映射必须从 Unicode 序数映射(通过ord) 到另一个 Unicode 序数、Unicode 字符串或 None(要删除)。因此我改变了默认值translate_to成为 Unicode 文字。例如:

>>> translate_non_alphanumerics(u'<foo>!', u'bad')
u'badfoobadbad'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 str.translate 使用 Unicode 字符串? 的相关文章

  • 学习Python中的解析器

    我记得我读过有关解析器的内容 您只需提供一些示例行 它就知道如何解析某些文本 它只是确定两条线之间的差异 以了解可变部分是什么 我以为它是用 python 写的 但我不确定 有谁知道那是什么图书馆吗 可能你的意思是模板制作器 http co
  • 如何在plotly(python)中的刻度标签和图形之间添加空格?

    如果我使用绘图创建水平条形图 则每个条形的标签都与图表相对应 我想在标签和图表之间添加一些空间 填充 边距 我怎样才能做到这一点 Example import plotly offline as py import plotly graph
  • XElement 和 UTF-8 问题

    我有一个 NET Web 服务 asmx 而不是 svc 它通过 HTTP POST 接受字符串 它接受的字符串是 xml 信息集 然后我通过 XElement Parse 进行解析 解析为 XElement 实例后 我将一个节点添加到该实
  • 在多核上运行 python 线程

    我知道Python 2 7不允许在不同的内核上运行多个线程 你需要使用multiprocessing模块以实现某种程度的并发性 我正在看concurrent futuresPython 3 4 中的模块 是否使用ThreadPoolExec
  • pandas 数据框的最大大小

    我正在尝试使用读取一个有点大的数据集pandas read csv or read stata功能 但我不断遇到Memory Errors 数据帧的最大大小是多少 我的理解是 只要数据适合内存 数据帧就应该没问题 这对我来说不应该是问题 还
  • 为什么 Ruby 中两个用空格分隔的字符串连接在一起?

    为什么这在 Ruby 中有效 foo bar gt foobar 我不确定为什么要连接字符串而不是给出语法错误 我很好奇这是否是预期的行为 以及解析器是否负责争论 没有运算符的两个字符串被视为单个字符串 或者语言定义本身指定了这种行为 隐式
  • 将列表值转换为 pandas 中的行

    我有数据帧 其中一列具有相同长度的 numpy ndarray 值 df list 0 Out 92 array 0 0 0 0 29273096 0 30691767 0 27531403 我想将这些列表值转换为数据框并从 df iloc
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • 如何在 python 中使用交叉验证执行 GridSearchCV

    我正在执行超参数调整RandomForest如下使用GridSearchCV X np array df features all features y np array df gold standard labels x train x
  • 何时对字符串文字使用 intern()

    我看到很多这样的遗留代码 class A public static final String CONSTANT value intern 我看不出使用 intern 的任何原因 因为在 Javadoc 中可以读到 所有文字字符串和字符串值
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • 为什么我会在 Python 字符串格式中使用除 %r 之外的其他内容?

    我偶尔会使用 Python 字符串格式 这可以像这样完成 print int i Float f String s 54 34 434 some text 但是 这也可以这样做 print int r Float r String r 54
  • python 中的 F 字符串前缀给出语法错误[重复]

    这个问题在这里已经有答案了 我有一个名为 method 的变量 它的值是 POST 但是当我尝试运行时print f method method is used 它不断在最后一个双引号处给出语法错误 我找不到它这样做的原因 我正在使用 py
  • 本地主机上的 Google App Engine GQL 查询

    我正在 Google App Engine Windows 上的 SDK 版本 1 7 0 上开发一个应用程序 我需要经常测试该应用程序 并且此测试涉及数据存储上的大量 GQL 查询 您可以在 App Engine 管理界面的浏览器中在线运
  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • 为数据集生成随机 JSON 结构排列

    我想生成 JSON 结构的许多不同排列作为同一数据集的表示 最好不需要对实现进行硬编码 例如 给定以下 JSON name smith occupation agent enemy humanity nemesis neo 应该产生许多不同
  • JSONDecodeError:额外数据:Python [重复]

    这个问题在这里已经有答案了 我使用以下代码从文件加载 json file file name obj list with open file as f for json obj in f obj list append loads json
  • 将函数按元素应用于两个 DataFrame

    如何应用函数z ij f x ij y ij 来自数据框X and Y相同大小并将结果保存到 DataFrameZ 这取决于你有什么样的功能 很多功能已经被矢量化为数据框 例如 等等 所以对于这些功能 你可以简单地做Z X Y or Z X
  • 如何使用 keras.backend.gradients() 获取梯度值

    我试图获得 Keras 模型的输出相对于模型输入 x 而不是权重 的导数 似乎最简单的方法是使用 keras backend 中的 梯度 它返回梯度张量 https keras io backend https keras io backe
  • 如何使 Django 自定义管理命令参数不再需要?

    我正在尝试在 django 中编写自定义管理命令 如下所示 class Command BaseCommand def add arguments self parser parser add argument delay type int

随机推荐

  • .Net IP 地址 IPv4

    我有以下代码 Dim ipAdd As IPAddress Dns GetHostEntry strHostname AddressList 0 Dim strIP As String ipAdd ToString 当我转换为字符串而不是像
  • 在 MATLAB GUI 中显示分析结果

    我的问题是这样的 我有一个 MATLAB GUI 我希望运行它时得到的分析结果显示在我的 GUI 而不是命令窗口中 我尝试使用列表框来显示结果 因为会自动为列表框创建滑块 但它不起作用 如何显示数据 也许使用静态文本框 首先 您必须确保禁止
  • symfony swiftmailer:邮件未在产品环境中发送

    我有一个 symfony 2 8 应用程序 并实现了 fosuserbundle 在里面dev环境中 注册确认邮件已发送 但未在prod环境 没有日志消息 smtp 配置正确 科幻版本 2 8 1 swiftmailer bundle 版本
  • 如何通过javascript将浏览器滚动到所需的元素?

    问题很简单 如何通过javascript将浏览器滚动到所需的元素或所需的位置 非常感谢您的帮助 对于一个元素 document getElementById id scrollIntoView 具有跨浏览器支持 http www quirk
  • 在会话中存储密码安全吗? [复制]

    这个问题在这里已经有答案了 我需要在会话中经常使用密码 我正在使用由密码加密的密钥来加密我的用户数据 这就是我的问题 储存安全吗纯文本php 会话中的密码 不是 cookie 所以非客户端 有没有更好的办法 或者我应该每次都询问我的用户密码
  • 如何跨多个程序集使用 WindsorInstaller 进行注册

    我正在使用 Castle Windsor 来处理我的依赖注入 到目前为止它一直运行良好 然而 我现在正在尝试扩展我的项目并添加一些额外的库 我现在正在努力寻找利用 Castle 的最佳方法 我目前有以下程序集 MyProject Inter
  • 如何在 SQL Server 中使用游标内的游标?

    我有以下查询 我想在查询中使用嵌套游标 如何执行此操作 因为它没有运行 而且我是 SQL Server 新手 请帮我 CHECK TABLE SUGGEST LAT 31 8181 LONG 71 4146 消息 16915 级别 16 状
  • 通过种子作业创建后立即启动詹金斯作业

    我正在使用 Jenkins DSL 插件自动为 git 项目的所有分支创建构建作业 DSL 插件由 Web 挂钩触发 以便在创建新分支后立即运行 每个分支生成的构建作业也配置为由 Web 挂钩触发 当前设置的问题是 构建只会在第二次提交后执
  • 替换第二次出现的 ?与 &

    任何人都可以提供适当的代码来仅替换 的第二个实例吗 在带有 的字符串中 我环顾四周 但似乎无法做到这一点 而且我一开始对正则表达式不太热衷 Thanks 您可以使用IndexOf指定起始索引来查找第二个问号的索引 然后使用Substring
  • .htaccess 中的 Zend SetEnv 不起作用

    我在我的 ubuntu 主服务器上安装了 Zend 在我的 htaccess 文件中 我有以下代码 SetEnv APPLICATION ENV development RewriteEngine On RewriteCond REQUES
  • 如何计算每行中匹配值的数量?

    我尝试了这段代码 import pandas as pd df pd DataFrame A ker 2 3 4 B 4 5 6 ker C 4 13 2 5ser ker D 4 5 6 2 5ser df count df iloc 0
  • 让人抓狂 - ASP.Net AJAX AutoComplete 不起作用

    希望有人能帮忙解决这个问题 我一直在网上和这个网站上寻找答案 但仍然无法让自动完成 AJAX 控件正常工作 我已经从尝试将其包含在现有网站中到将其剥离回非常基本的形式 但它仍然无法正常工作 我使用页面方法而不是本地网络服务更幸运 所以这是我
  • 有没有办法让 WebView 小部件使用 Chrome 而不是三星/LG Android 手机上的内置 WebKit 浏览器?

    在 Android 应用程序中使用 WebView 时 Android 将在后台使用不同的浏览器来呈现网页 例如 三星设备上的 Android 4 4 之前版本将使用三星原厂手机上基于 WebKit 的浏览器 即使已安装 Chrome 并且
  • Java - 将字符串(包括 EEST)转换为日期

    我有这样的字符串 Wed Oct 27 00 00 00 EEST 2010 我想将其解析为日期类型 我尝试过 DateTimeFormat fmt DateTimeFormat getFormat EEE MMM dd HH mm ss
  • 如何在 R 中将字符列表折叠为单个字符串

    我想将一个列表作为单个字符串输出到 Excel 文件中 我从一个字符列表开始 url http eutils ncbi nlm nih gov entrez eutils efetch fcgi db pubmed id 21558518
  • Qt/Qml:地图元素的 Repeater 与 MapItemView

    我想用来自 a 的地图元素 如 MapCircle 填充 Qml 地图QAbstractListModel 似乎有两个 Qml 工具适合于此 MapItemView 1 和Repeater 2 这Repeater更强大 例如 它允许嵌套模型
  • 反应中的SVG大小

    你好 我拼命地想在反应中调整 svg 的大小 无论我做什么 即使包含它的 div 小得多 大小也保持不变 在正常的 html 和 css 中 它会自动调整大小 我做错了什么 import React Component from react
  • Android生命周期库:无法添加具有不同生命周期的相同观察者

    我正在开发一个使用生命周期库的应用程序 但我收到一个 IllegalArgumentException 上面写着 无法添加具有不同生命周期的相同观察者 我只在 onCreate 中添加观察者 我认为这是安全的 我的大多数观察者都是通过匿名类
  • 如何向 添加预定义颜色?

    据 MDN 报道 list属性可用于
  • 如何让 str.translate 使用 Unicode 字符串?

    我有以下代码 import string def translate non alphanumerics to translate translate to not letters or digits u lt gt translate t