如何创建一个列表来选择指数?(How to create a list to select inde

2019-10-16 23:23发布

我有这样的代码来检查的文件索引,看看它们是否匹配,但开始我无法能够选择的指数。 我有什么,为了能够这样做,这样做,因为在这一刻它不显示值在列表之中。

def checkOS():
    fid = open("C:/Python/NSRLOS.txt", 'r')
    fhand = open("C:/Python/sha_sub_hashes.out", 'r')
    sLine = fhand.readline()
    line = fid.readline()
    outdata = []
    print line
checkOS()

现在它打印:

"190","Windows 2000","2000","609"

我只希望它打印:(所以index[0]

190

当我尝试index[0]我刚刚获得' " ' 。所以整个字符串中的第一个值,我希望有一个列表,可以选择指数。

Answer 1:

尝试使用line.split(",")来分割由逗号行,然后通过切割结果去掉引号。

例:

>>> line = '"190","Windows 2000","2000","609"'
>>> sliced = line.split(',')
>>> print sliced
['"190"', '"Windows 2000"', '"2000"', '"609"']
>>> first_item = sliced[0][1:-1]
>>> print first_item
190

...这是整个事情,抽象成一个函数:

def get_item(line, index):
    return line.split(',')[index][1:-1]

(这是假设,当然,在该行的所有项目用逗号分开,他们都在包装用引号,那有逗号后没有空格(尽管你可以通过做照顾那个item.strip()删除空格)。如在评论中指出,这也如果引用的项目包含逗号失败。)



Answer 2:

如果你尝试使用split()来分割每个逗号,并返回第一个值? 尝试这个。



Answer 3:

[0]应用到串只返回第一个字符。

你想要一个逗号分隔的列表中的第一项。 你可以写你自己的解析代码,或者您可以使用csv其中已经处理了这个模块。

import csv

def get_first_row(fname):
    with open(fname, 'rb') as inf:
        incsv = csv.reader(inf)
        try:
            row = incsv.next()
        except StopIteration:
            row = [None]
        return row

def checkOS():
    fid = get_first_row("C:/Python/NSRLOS.txt")[0]
    fhand = get_first_row("C:/Python/sha_sub_hashes.out")[0]
    print fid


Answer 4:

csv.reader将是一个良好的开端。

import csv
from itertools import izip

with open('file1.csv') as fid, open('file2.csv') as fhand:
    fidcsv = csv.reader(fid)
    fhandcsv = csv.reder(fhand)
    for row1, row2 in izip(fidcsv, fhandcsv):
        print row1, row2, row[1] # etc...

使用csv.reader将处理CSV格式的文件比纯海峡方法更好。 该izip将读取行1然后2,然后3等两个文件(它会停在虽然最短号文件中的行),然后从两个文件2号线等。(不知道这是你想要的虽然)。 ROW1和ROW2最终会被列的列表,然后只索引if row1[0] == row2[0]:或者你想使用的任何逻辑。



文章来源: How to create a list to select index?