我需要从一个看起来像这样的文本文件中读取:
football 1
basketball 2
hockey 0
tennis 2
...
其中有x行,每行有一个运动和一个数字。我得到了一项运动,我必须在一个变量中保存这项运动的数量,但我找不到一个好方法。
答案 0 :(得分:2)
这里有几个选择。最简单的方法是使用标准python迭代文件对象。
# This will only get the first occurrence
with open("sportfile.txt", "r") as f:
for line in f:
curr_sport, num = line.split()
if curr_sport==sport:
break
如果您有多次出现,您可以将这些数字存储在一个列表中 - 或者如果您不需要特异性,可以将它们相加...取决于手头的问题。
sport = 'football' # for example
football_nums = []
with open("sportfile.txt", "r") as f:
for line in f:
curr_sport, num = line.split()
if curr_sport==sport:
football_nums.append(num)
有关python中文件句柄的信息,请参阅文档“https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files”。
如果您需要将文件翻译成python结构,您可以查询以查找任何运动和相应的数字,您可以使用熊猫(可能是矫枉过正,但我喜欢熊猫: - ))
df = pd.read_csv('sportfile.txt', sep = ' ')
df.columns = ['sport', 'num']
df[df.sport=='football'] # returns all rows where the sport is football.
pandas .read_csv()
非常详细而且功能强大:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html
答案 1 :(得分:0)
随意试试这个。刚刚测试了shell中的快速样本。
import sys
if __name__ == '__main__':
key = "football"
for line in sys.stdin:
sport, number = line.split()
if sport == key:
print "{}, {}".format(sport, number)
break
else:
print "{} not found".format(key)