如何在 Python 中确定“单词”的大小

Posted

技术标签:

【中文标题】如何在 Python 中确定“单词”的大小【英文标题】:How to determine 'word' size in Python 【发布时间】:2011-10-18 14:21:32 【问题描述】:

我需要知道 Python 中“单词”中的字节数。我需要这个的原因是我需要从文件中读取的字数;如果我知道一个单词的字节数,我可以使用file.read(num_bytes) 函数从文件中读取适当的字节数。

如何确定一个字的字节数?

【问题讨论】:

定义“单词”。你指的是记忆单位还是语言概念? 我没有指定。我的意思是内存单元,我猜它在 Python 中是未定义的,正如@TokenMacGuy 所说的那样。 一个单词的字节数应该由文件格式决定,而不是Python。您应该查看创建该文件的应用程序。 @Jeremy TokenMacGuy 是正确的,Python 中没有标准词。不同的文件/平台会有不同的行为。 然而,“地址大小”有一个定义明确的概念,接受的答案报告了它,但可能与文件中可以找到的数据完全没有关系(除非在/sys/proc 在具有 sysfs/procfs 的 Linux 系统上公开二进制地址值) 【参考方案1】:

你可以使用platform.architecture函数:

>>> import platform
>>> platform.architecture()
('64bit', '')

注意同一页的注释:

注意在 Mac OS X(可能还有其他平台)上,可执行文件可能是包含多种架构的通用文件。 要获取当前解释器的“64位”,查询sys.maxsize属性更可靠:

is_64bits = sys.maxsize > 2**32

请记住,这给出了编译 python 解释器的字长。如果python在32位模式下编译,你可以在64位主机上获得32的值。

如果文件由不同的可执行文件生成并且您有权访问此可执行文件,则可以使用platform.architecture 函数的第一个可选参数:

>>> p.architecture('/path/to/executable')
('32bit', '')

【讨论】:

【参考方案2】:

Python 中没有“字”的概念,当您从文件中读取二进制数据时,您可以明确说明一次应该读取多少字节。

就编译器和/或平台而言,“WORD”通常确定基本数据单元的大小。而且 Python 独立于那种东西 :)

【讨论】:

【参考方案3】:

对于单词是什么,并没有真正合理的定义;除了某些架构将某些字节数称为“字”(x86 调用 2 个字节一个字,PPC 调用 4 个字节一个字),但除了这个任意值之外没有太大意义。

也许最简单的解决方案就是只使用struct 模块;例如,'h' 格式表示有符号短(这与英特尔对“单词”的定义合理地一致)。所以你可以这样做:

>>> import struct
>>> f = file('.vimrc')
>>> struct.unpack('h', f.read(struct.calcsize('h')))
(8226,)
>>> 

【讨论】:

【参考方案4】:

我需要知道 Python 中“单词”的字节数。我的原因 需要这是我需要从文件中读取的字数

然后您需要询问编写文件的人。它与 Python 无关,与实际文件格式有关。顺便说一句,将文件定义为单词序列是很奇怪的。它很可能是一个 16 位或 32 位整数的序列,或者它确实是文本意义上的单词,在这种情况下,您实际上是在扫描文件以查找分隔符之间的标记。

【讨论】:

【参考方案5】:

这样的事情怎么样:

def machine_word_size():
    import sys
    num_bytes = 0
    maxint = sys.maxint
    while maxint > 0:
        maxint = maxint >> 8
        num_bytes += 1
    return num_bytes

【讨论】:

【参考方案6】:

也许以下内容可能是相关且有用的:假设您检查 32 位。看看 (-1)

【讨论】:

以上是关于如何在 Python 中确定“单词”的大小的主要内容,如果未能解决你的问题,请参考以下文章

如何确定可以从一袋字母和一袋单词python中组成的单词的数量和集合

如何确定 Python 中集合变量的大小?

如何在目录中的所有 csvs 文件中进行 python 关键字搜索和单词计数器并写入单个 csv? [关闭]

如何确定在 SwiftUI 中的多词文本视图中点击的词

如何在文本视图中更改单个单词的文本大小和颜色[重复]

如何在保持大小写的同时在单词中插入字符