0

这是我到目前为止所拥有的:

EX1 = open('ex1.txt')
EX1READ = EX1.read()
X1READ.splitlines(0)

['jk43:23 Marfield Lane:Plainview:NY:10023',
 'axe99:315 W. 115th Street, Apt. 11B:New      York:NY:10027',
 'jab44:23 Rivington Street, Apt. 3R:New York:NY:10002',
 'ap172:19 Boxer Rd.:New York:NY:10005',
 'jb23:115 Karas Dr.:Jersey City:NJ:07127',
 'jb29:119 Xylon Dr.:Jersey City:NJ:07127',
 'ak9:234 Main Street:Philadelphia:PA:08990']

我希望能够从该列表中获取 userId 并按字母顺序打印。任何提示都会很棒。

4

3 回答 3

0

这样做:

IDs=[]
with open('ex1.txt', 'rb') as f:
    for line in f:
        IDs.append(line.split(':')[0])

print sorted(IDs)     

印刷:

['ak9', 'ap172', 'axe99', 'jab44', 'jb23', 'jb29', 'jk43']

如果您的用户 ID 喜欢jk43:23使用IDs.append(line.split(' ')[0])并打印:

['ak9:234', 'ap172:19', 'axe99:315', 'jab44:23', 'jb23:115', 'jb29:119', 'jk43:23']

如果您的用户 ID 只是数字,请使用IDs.append(int(line.split(' ')[0].split(':')[1]))which 打印:

[19, 23, 23, 115, 119, 234, 315]
于 2012-05-11T01:42:24.377 回答
0

假设第一个“:”之前的部分是用户 ID,您可以以更 Python 的方式执行此操作:

with open("ex1.txt") as f:
    lines = f.readlines()
    userIDs = [l.split(":",1)[0] for l in lines]
    print "\n".join(sorted(userIDs))
于 2012-05-11T01:54:26.220 回答
0
userIds = []

EX1 = open('ex1.txt')
X1READ = EX1.readlines()

for line in X1READ:
    useridname = line.split(" ")[0].split(":")[0];
    userid = line.split(" ")[0].split(":")[1]
    userIds.append([useridname, userid])

我确信有更多 Pythonic 方法可以做到这一点,但我的方法将返回一个列表列表,其中父列表中的每个子列表的格式如下:

["jk43", "23"]

因此,要获取第一个用户 ID 和 ID 号,您可以这样做:

firstUserId = userIds[0][0] + ": " + userIds[0][1]

哪个会输出

“jk43:23”

要对 ID 列表进行排序,您可以执行以下操作:

userIds = sorted(userIds, key = id: id[0])
于 2012-05-11T01:32:31.487 回答