从文件中读取列表
Read list from a file
我想从文件中读取一个简单的列表。但是不能将列表元素彼此分开。
这是我的文件:
"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])
这个returns 1 而不是红色
str.split
不会改变字符串,因为它们是不可变的。您需要将 return 值分配回变量:
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。
您需要在 "commas" 上拆分,并删除封闭的 double-quotes -
此外,不需要四行函数来读取文件内容:
conf_file = [part.strip('"') for part in open(filename).read().split(",")]
您可以使用 csv
模块。
import csv
def fread(file_name):
with open(file_name) as f:
return next(csv.reader(f))
print(fread("file.name"))
我想从文件中读取一个简单的列表。但是不能将列表元素彼此分开。
这是我的文件:
"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])
这个returns 1 而不是红色
str.split
不会改变字符串,因为它们是不可变的。您需要将 return 值分配回变量:
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。
您需要在 "commas" 上拆分,并删除封闭的 double-quotes -
此外,不需要四行函数来读取文件内容:
conf_file = [part.strip('"') for part in open(filename).read().split(",")]
您可以使用 csv
模块。
import csv
def fread(file_name):
with open(file_name) as f:
return next(csv.reader(f))
print(fread("file.name"))