如何在'utf-8'中读取文件

时间:2017-11-29 15:28:01

标签: python utf-8 encode

我有一个txt文件,每行包含一个姓氏,一些姓氏有一个特殊的字母'Ñ'

Apellidos200.txt

 Ramos      
 Rios       
 Arias      
 Muñoz

要解析和阅读此文件,我使用此代码。

apellidos_list = list()
with io.open('Apellidos200.txt',encoding='utf-8') as fp:
     for line in fp:
         x = line.replace('\t','')
         x = x.replace('\'', '')# I try this
         x = x.replace('\n','')
         x = x.replace('\r','')
         x = x.replace('\\','')
         x = x.replace('"','') # And try this
         apellidos_list.append(repr(x))

输出:

     'Ramos'        
     'Rios'     
     'Arias'        
     'Muñoz'

问题是字符串是使用我无法删除的简单引号传递的,我想那是'utf-8'中的编码

我使用这个字符串来连接并创建一个url 例如 example.com/Ramos ,但是通过这个简单的引用它仍然是这样的 - > example.com/'Ramos',当我使用'request.get'时会导致错误

编辑: 使用代码调试添加图像。 Image of debug

1 个答案:

答案 0 :(得分:0)

您正在存储字符串的表示repr()是一个调试工具,输出一个有效的Python表达式来重现你的字符串。因此,您将获得一个包含有效Python字符串文字的字符串,其中任何不可打印的非ASCII字符都替换为转义序列(始终以\开头,后跟单个字符,或x加2十六进制字符,u,带有4个十六进制字符或U带有8个,具体取决于代码点。

请勿使用repr()。你所拥有的只是带有一些空格(标签和换行符)的字符串,所以你需要str.strip()

apellidos_list = []
with io.open('Apellidos200.txt',encoding='utf-8') as fp:
    for line in fp:
        apellidos_list.append(line.strip())

或使用列表理解:

with io.open('Apellidos200.txt',encoding='utf-8') as fp:
    apellidos_list = [line.strip() for line in fp]