问题标签 [python-2.x]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
30 回答
779829 浏览

python - 没有名为 MySQLdb 的模块

我正在使用 Python 2.5.4 版并安装 MySQL 5.0 版和 Django。Django 在 Python 上运行良好,但在 MySQL 上运行良好。我在 Windows Vista 中使用它。

0 投票
4 回答
46465 浏览

python - Python super() 引发 TypeError

在 Python 2.5 中,以下代码引发了 a TypeError

如果我用 替换class Xclass X(object)它将起作用。对此有何解释?

0 投票
11 回答
242928 浏览

python - 在 Python 中管道标准输出时设置正确的编码

当管道输出 Python 程序的输出时,Python 解释器对编码感到困惑,并将其设置为 None。这意味着这样的程序:

正常运行时会正常工作,但会失败:

UnicodeEncodeError:“ascii”编解码器无法在位置 0 编码字符 u'\xa0':序数不在范围内(128)

在管道序列中使用时。

管道时完成这项工作的最佳方法是什么?我可以告诉它使用外壳/文件系统/正在使用的任何编码吗?

到目前为止,我看到的建议是直接修改您的 site.py,或使用此 hack 硬编码默认编码:

有没有更好的方法来使管道工作?

0 投票
11 回答
392820 浏览

python - 在 Python unicode 字符串中删除重音(规范化)的最佳方法是什么?

我在 Python 中有一个 Unicode 字符串,我想删除所有的重音符号(变音符号)。

我在网上找到了一种优雅的方法(在 Java 中):

  1. 将 Unicode 字符串转换为其长规范化形式(字母和变音符号使用单独的字符)
  2. 删除所有 Unicode 类型为“变音符号”的字符。

我是否需要安装诸如 pyICU 之类的库,或者仅使用 Python 标准库就可以做到这一点?那么python 3呢?

重要提示:我想避免使用从重音字符到非重音字符的显式映射的代码。

0 投票
5 回答
33986 浏览

python - 如何将 Unicode 转换为大写进行打印?

我有这个:

我需要做的打印:

(“a”的重音是大写的。)

我正在使用 Python 2.6。

0 投票
12 回答
6365 浏览

python - 如何优化此 Python 代码以生成所有单词距离为 1 的单词?

分析显示这是我编写的一个小文字游戏代码中最慢的部分:

笔记:

  • distance()被调用超过 500 万次,其中大部分来自 getchildren,它应该获取单词列表中与word恰好相差 1 个字母的所有单词。
  • wordlist 被预先过滤为仅包含包含相同数量字母的单词,word因此可以保证word1并且word2具有相同数量的字符。
  • 我对 Python 相当陌生(3 天前开始学习它),所以对命名约定或其他样式的评论也很感激。
  • 对于单词表,使用“2+2lemma.txt”文件获取12dict 单词表

结果:

谢谢大家,结合不同的建议,我现在让程序运行速度提高了两倍(除了我在询问之前自己进行的优化,所以速度比我最初的实现提高了大约 4 倍)

我用两组输入进行了测试,我将它们称为 A 和 B

优化 1:迭代 word1,2 的索引... from

迭代字母对使用zip(word1, word2)

输入 A 的执行时间从 11.92 到 9.18,输入 B 的执行时间从 79.30 到 74.59

优化 2:除了距离方法(我在其他地方仍然需要 A* 启发式)之外,还添加了一种单独的方法

输入 A 的执行时间从 9.18 到 8.83,输入 B 的执行时间从 74.59 到 70.14

优化3:这里的大赢家是使用izip而不是zip

输入 A 的执行时间从 8.83 到 5.02,输入 B 的执行时间从 70.14 到 41.69

我可能会更好地用较低级别的语言编写它,但我现在对此感到满意。谢谢大家!

再次编辑:更多结果使用 Mark 的方法检查第一个字母不匹配的情况使其从 5.02 -> 3.59 和 41.69 -> 29.82 下降

在此基础上并合并izip而不是range,我最终得到了这个:

挤压得更多,使时间从 3.59 -> 3.38 和 29.82 -> 27.88

甚至更多的结果!

尝试 Sumudu 的建议,即我生成一个与“word”相差 1 个字母的所有字符串的列表,然后检查哪些字符串在 wordlist中,而不是 is_neighbor 函数,我最终得到了这个:

最终速度变慢了(3.38 -> 3.74 和 27.88 -> 34.40),但看起来很有希望。起初我认为我需要优化的部分是“one_letter_off_strings”,但分析显示并非如此,而且慢的部分实际上是

我想如果我切换“oneoff”和“wordlist”并在我正在寻找两个列表的交集时以另一种方式进行比较,是否会有任何区别。我用字母上的 set-intersection替换它:

砰!3.74 -> 0.23 和 34.40 -> 2.25

这真是令人惊讶,与我最初的幼稚实现的总速度差异:23.79 -> 0.23 和 180.07 -> 2.25,比原来的实现快大约 80 到 100 倍。

如果有人有兴趣,我会发表博客文章来描述程序描述所做的优化,包括此处未提及的优化(因为它位于不同的代码部分中)。

大辩论:

好的,我和 Unknown 正在进行一场大辩论,您可以在他的回答的评论中阅读。他声称,如果将其移植到 C 中,使用原始方法(使用 is_neighbor 而不是使用集合)会更快。我尝试了 2 个小时来获得我编写的 C 模块来构建和可链接,但在尝试后没有太大成功按照这个这个例子,看起来这个过程在Windows中有点不同?我不知道,但我放弃了。无论如何,这是程序的完整代码,文本文件来自12dict单词列表使用“2+2lemma.txt”文件。对不起,如果代码有点乱,这只是我一起破解的。此外,我忘记从单词列表中删除逗号,因此这实际上是一个错误,您可以保留它以进行相同的比较,或者通过在 cleanentries 的字符列表中添加逗号来修复它。

我留下了 is_neighbors 方法,即使它没有被使用。这是建议移植到 C 的方法。要使用它,只需将 getchildren 替换为:

至于让它作为 C 模块工作,我并没有那么远,但这就是我想出的:

我使用以下方法对此进行了分析:

python -m cProfile "Wordgame.py"

记录的时间是AStar方法调用的总时间。快速输入集是“诗歌诗人”,而长输入集是“诗人诗歌”。不同机器之间的时间显然会有所不同,因此如果有人最终尝试这样做,请按原样比较程序的结果,以及与 C 模块的比较。

0 投票
4 回答
21344 浏览

python - 在 Windows 上的 Python 2.x 中从命令行参数读取 Unicode 字符

我希望我的 Python 脚本能够在 Windows 中读取 Unicode 命令行参数。但似乎 sys.argv 是以某种本地编码而不是 Unicode 编码的字符串。如何阅读完整的 Unicode 命令行?

示例代码:argv.py

在为日语代码页设置的 PC 上,我得到:

我相信这是 Shift-JIS 编码的,它对那个文件名“有效”。但它会中断带有不在 Shift-JIS 字符集中的字符的文件名——最终的“打开”调用失败:

注意——我说的是 Python 2.x,而不是 Python 3.0。我发现 Python 3.0 提供sys.argv了正确的 Unicode。但是现在过渡到 Python 3.0 还为时过早(由于缺乏 3rd 方库支持)。

更新:

一些答案说我应该根据sys.argv编码的任何内容进行解码。问题在于它不是完整的 Unicode,因此某些字符无法表示。

这是让我感到悲伤的用例:我在 Windows Explorer 中启用了将文件拖放到 .py 文件上。我的文件名包含各种字符,包括一些不在系统默认代码页中的字符。当字符在当前代码页编码中不可表示时,我的 Python 脚本在所有情况下都无法通过 sys.argv 获得正确的 Unicode 文件名。

当然有一些 Windows API 可以读取带有完整 Unicode 的命令行(Python 3.0 可以做到)。我假设 Python 2.x 解释器没有使用它。

0 投票
1 回答
395 浏览

django - 在 Django 页面中呈现图像而不是其名称

我正在尝试在我的list_display页面中显示图像而不是其名称。

我将图像存储在模型的banner字段中。我制作了一个应该返回图像的函数,但我看到的是字符串<img src= ....>而不是图像。

我的模型横幅中有一个字符变化字段。

并在admin.py

0 投票
21 回答
369684 浏览

python - 如何从 JSON 中获取字符串对象而不是 Unicode?

我正在使用Python 2ASCII 编码的文本文件中解析 JSON。

使用json或 加载这些文件时simplejson,我的所有字符串值都将转换为 Unicode 对象而不是字符串对象。问题是,我必须将数据与一些只接受字符串对象的库一起使用。我不能更改库也不能更新它们。

是否可以获取字符串对象而不是 Unicode 对象?

例子

更新

这个问题是很久以前问的,当时我被Python 2困住了。今天一个简单而干净的解决方案是使用 Python 的最新版本——即Python 3及更高版本。

0 投票
3 回答
44250 浏览

python - 如何将 unicode 转义序列转换为 python 字符串中的 unicode 字符

当我尝试使用“unicode(head.contents[3])”获取标签的内容时,我得到的输出类似于:“Christensen Sk\xf6ld”。我希望转义序列作为字符串返回。如何在python中做到这一点?