我试图将.txt文件中的值从python中的数组/列表中获取。 假设我在user.txt中有这些数据:
ghost:001
ghost:002
ghost:003
所以,当我想把它输出为:
'ghost:001','ghost:002','ghost:003'
我使用此功能
def readFromFile(filename, use_csv):
userlist = ''
userlist_b = ''
print ("Fetching users from '%s'"% filename)
f = open (filename,"r")
for line in f:
userlist+=str(line)
userlist = "','".join(userlist.split("\n"))
userlist = "'" + userlist + "'"
userlist = "(%s)" %userlist
return userlist
我的问题是我怎么能这样做: 我想打印特定用户。像
这样的东西idx = 2
print("User[%s] : %s",%idx, %(array[idx]))
*output:*
User[2] : ghost:003
如何组建阵列?
有人可以帮助我吗?
答案 0 :(得分:1)
我会将用户存储在dict中,每个用户的密钥递增:
d = {}
with open("in.txt") as f:
user = 1
for line in f:
d[user]= line.rstrip()
user += 1
print(d)
{1: 'ghost:001', 2: 'ghost:002', 3: 'ghost:003'}
如果您只想要一个用户列表并通过索引访问:
with open("in.txt") as f:
users = f.readlines()
print("User {}".format(users[0]))
User ghost:001
答案 1 :(得分:0)
查看加载词典。这段代码可以帮到你。
import json
import pickle
d = { 'field1': 'value1', 'field2': 2, }
json.dump(d,open("testjson.txt","w"))
print json.load(open("testjson.txt","r"))
pickle.dump(d,open("testpickle.txt","w"))
print pickle.load(open("testpickle.txt","r"))
答案 2 :(得分:0)
如果您希望将文件(一个大字符串)拆分为较小的字符串,请不要构建新字符串,然后再将其拆分。只需将每一行附加到列表中:
def readFromFile(filename, use_csv):
userlist = []
print ("Fetching users from '%s'"% filename)
with open(filename,"r") as f:
for line in f.read():
userlist.append(line)
return userlist
array = readFromFile('somefile', use_csv)
idx = 2
print("User[%s] : %s" % (idx, array[idx]))
答案 3 :(得分:0)
不确定你想要的User['idx']
部分。
尝试使用list comprehensions。 如果这就是你需要的,请使用索引而不是字典。 (如果该行的秒部分确实是您正在查找的索引,我可以添加一个dict版本)
# read the file and use strip to remove trailing \n
User = [line.strip() for line in open(filename).readlines()]
# your output
print "User[2] : %s"%User[2]
# commented line is more clear
#print ','.join(User)
# but this use of repr adds the single quotes you showed
print ','.join(repr(user) for user in User)
输出:
User[2] : ghost:003
'ghost:001','ghost:002','ghost:003'