我想从文件中读取一个简单列表。但是不能将列表元素彼此分开。
这是我的文件:
"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而不是红色
答案 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转换为int
11。
答案 3 :(得分:-1)
您需要分割“逗号”,并删除其中的双引号-
此外,无需四行功能即可读取文件内容:
conf_file = [part.strip('"') for part in open(filename).read().split(",")]