拆分函数添加到我的lis中:

2024-05-17 14:17:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想打开我的file.txt,并从这个文件中分割所有数据。

这是我的file.txt

some_data1 some_data2 some_data3 some_data4 some_data5

下面是我的python代码:

>>>file_txt = open("file.txt", 'r')
>>>data = file_txt.read()
>>>data_list = data.split(' ')
>>>print data
some_data1 some_data2 some_data3 some_data4 some_data5
>>>print data_list
['\xef\xbb\xbfsome_data1', 'some_data1', "some_data1", 'some_data1', 'some_data1\n']

正如你在这里看到的,当我打印我的data_list时,它会将这个:\xef\xbb\xbf和这个:\n添加到我的列表中。这些是什么,我如何才能从中清除我的列表。

谢谢。


Tags: 文件txt列表datasomelistfileprint
3条回答

正如前面提到的,您正在处理一个文件,该文件的开头包含UTF-8bom。

它们都告诉你如何处理它或直接移除它。

但是,如果您碰巧只需要处理一个静态文件(或它们的一个小的静态集),那么您可能希望完全主动删除BOM,这样就不必处理它了。

事实上,大多数文本编辑器允许您从一种编码转换到另一种编码,有时带有BOM的UTF-8和UTF-8会单独列出。

我首先想到的(但有很多)是记事本++。只需输入编码>;转换为不带BOM的UTF-8,保存文件即可设置。

\xef\xbb\xbf是UTF-8的Byte Order Mark-表示接下来两个字符的\xis an escape sequence是表示字符代码的十六进制序列。

\n是一个新行字符。要删除此项,可以使用^{}

data.rstrip()
data_list = data.split(' ')

要删除字节顺序标记,可以使用^{}(假设使用的是2.6或2.7)以utf-8模式打开文件。注意,在Python中实现时可能会慢一点——如果需要速度或较旧版本的Python,请查看^{}

试试这样的:

import io

# Make sure we don't lose the list when we close the file
data_list = []

# Use `with` to ensure the file gets cleaned up properly
with io.open('file.txt', 'r', encoding='utf-8') as file:
    data = file.read() # Be careful when using read() with big files
    data.rstrip() # Chomp the newline character
    data_list = data.split(' ')

print data_list

文件开头包含UTF-8 BOM

要消除它,首先将文件内容解码为unicode。

fp = open("file.txt")
data = fp.read().decode("utf-8-sig").encode("utf-8")

但最好不要将其编码回utf-8,而是使用unicoded文本。有一个好的规则:尽快将所有输入的文本数据解码为unicode,并且只使用unicode;并且尽可能晚地将输出数据编码为所需的编码。这将使你免于许多头痛。

要以某种编码读取较大的文件,请使用^{}^{}

还要检查this

使用^{}^{}删除换行符\n

相关问题 更多 >