Python中的txt文件中的数组/列表

时间:2014-10-31 02:45:32

标签: python arrays pandas

我试图将.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

如何组建阵列?

有人可以帮助我吗?

4 个答案:

答案 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'