从文件中读取列表

时间:2019-05-27 18:59:48

标签: python python-3.x file-io

我想从文件中读取一个简单列表。但是不能将列表元素彼此分开。

这是我的文件:

"11","Arial","red","white","black","200x200","My Project"

这是我的阅读功能:

def fread(file_name):
    user_file=open('{}'.format(file_name),"r")
    file_content=user_file.read()
    user_file.close()
    return str(file_content)

这是不起作用的部分:

conf_file=fread("settings")
conf_file.split(",")
print(conf_file[2])

这将返回1而不是红色

4 个答案:

答案 0 :(得分:0)

尝试一下:

def fread(file_name):
    user_file=open('{}'.format(file_name),"r")
    file_content=user_file.read()
    user_file.close()
    return list(map(str.strip, str(file_content).replace('"','').split(',')))

答案 1 :(得分:0)

您可以使用csv模块。

import csv

def fread(file_name):
    with open(file_name) as f:
        return next(csv.reader(f))

print(fread("file.name"))

答案 2 :(得分:-1)

str.split不会改变字符串,因为它们是不可变的。您需要将返回值分配回变量:

conf_file = fread("settings")
conf_file = conf_file.split(",")
print(conf_file[2])

包含以下内容的行:

open('{}'.format(file_name), 'r')

如果您不需要修改输入字符串,可以将其写为以下内容:

open(file_name, 'r')

由于所有项目都用双引号引起来,因此Python会将它们包含在字符串中。如果只想使用字符串中的值,则需要使用字符串的一部分将其删除。在用逗号分隔后添加以下行:

conf_file = [value[1:-1] for value in conf_file]

现在,像'"11"'这样的数据将是'11'。请注意,这不会将string 11转换为int11。

答案 3 :(得分:-1)

您需要分割“逗号”,并删除其中的双引号-

此外,无需四行功能即可读取文件内容:

conf_file = [part.strip('"') for part in open(filename).read().split(",")]