我有这样的代码来检查的文件索引,看看它们是否匹配,但开始我无法能够选择的指数。 我有什么,为了能够这样做,这样做,因为在这一刻它不显示值在列表之中。
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]
我刚刚获得' " '
。所以整个字符串中的第一个值,我希望有一个列表,可以选择指数。
尝试使用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()
删除空格)。如在评论中指出,这也如果引用的项目包含逗号失败。)
如果你尝试使用split()
来分割每个逗号,并返回第一个值? 尝试这个。
[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
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]:
或者你想使用的任何逻辑。