![](/img/trans.png)
[英]How to count total words in a text file without using rstrip() in Python?
[英]Why rstrip cannot return raw text in Python?
我正在尝试使用以下 Python 代码逐行打印西班牙语文本:
path = 'segismundo.txt' #set the path file
f = open(path, encoding="utf-8")
lines = [x.rstrip() for x in open(path)]
print(lines)
原始文本是:
Sueña el rico en su riqueza,
que más cuidados le ofrece;
sueña el pobre que padece
su miseria y su pobreza;
然而,结果是:
['Sue帽a el rico en su riqueza,', 'que m谩s cuidados le ofrece;', '', 'sue帽a el pobreque
padece', 'su miseria y su pobreza;', '']
我的系统语言是中文('帽子','骂'都是汉字)所以我想知道是不是因为rstrip方法只能执行英文?
编码和解码是一个棘手的问题,尤其是因为当前的软件必须设法保持与 Unicode 之前的软件和文件的兼容性。
所以你列出的文本不是原始的,因为它没有存储在文件中。 大多数文件系统中的文件都包含字节,您必须通过其他一些方式了解这些文件使用的编码。 为此,Python 默认情况下会根据区域设置猜测用于打开文件的编码。 您可以使用open
的encoding
参数覆盖它,就像您在以f =...
开头的行中所做的那样,但关键不是在下一行,您在下一行使用默认编码再次打开同一个文件。
print
有一个类似的问题:它可以写入文件,或者 output 可以在终端上打印,或者通过管道传输到另一个进程,但至关重要的是,所有这些进程都对原始字节序列进行操作,因此需要对字符串进行编码.
所以你的代码中有两个潜在的不匹配:
鉴于您的问题中存在的线索,我的猜测是您只需要将阅读文本的行更改为:
lines = [x.rstrip() for x in f]
您也永远不会关闭文件,这通常不是问题,但对于较大的应用程序要记住:您不想在不需要时让文件保持打开状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.