Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过列表进行搜索和查找_Python_List_Iteration_Tuples - Fatal编程技术网

Python 通过列表进行搜索和查找

Python 通过列表进行搜索和查找,python,list,iteration,tuples,Python,List,Iteration,Tuples,我有一个如下所示的主文本文件: STATUS | CRN | SUBJECT | SECT | COURSE | CREDIT | INSTR.| buildg/RM | DAY/TIME | FROM/TO | 公开| 43565 | ACA6202 | 10 |代理II | 3.00 |洛根,G |见部门| 01/12/15-04/27/15 | 开放式| 43566 | ACA6206 | 10 |主题:古典戏剧/邪教II | 2.00 |雅各布森,L |见部门| 01/12/15-04

我有一个如下所示的主文本文件:

STATUS | CRN | SUBJECT | SECT | COURSE | CREDIT | INSTR.| buildg/RM | DAY/TIME | FROM/TO |
公开| 43565 | ACA6202 | 10 |代理II | 3.00 |洛根,G |见部门| 01/12/15-04/27/15 |
开放式| 43566 | ACA6206 | 10 |主题:古典戏剧/邪教II | 2.00 |雅各布森,L |见部门| 01/12/15-04/27/15 |
开放式| 43567 | ACA6210 | 10 |文本II | 2.00 |洛根,G |见部门| 01/12/15-04/27/15 |
开放式| 43568 | ACA6212 | 10 |语音和演讲II | 3.00 |洛根,G |见部门| 01/12/15-04/27/15 |
开放式| 43569 | ACA6216 | 10 |运动II | 2.00 |洛根,G |见部门| 01/12/15-04/27/15 |
开放式| 43570 | ACA6220 | 10 |亚历山大技术II | 2.00 |洛根,G |见部门| 01/12/15-04/27/15 |
公开赛| 43571 | ACA6224 | 10 |第二阶段战斗| 2.00 |洛根,G |见部门| 01/12/15-04/27/15 |
开放式| 43572 | ACA6228 | 10 |实习IV | 3.00 |洛根,G |见部门| 01/12/15-04/27/15 |

打开| 44500 | ACA6595 | 10 |选定主题| 1.00 | Logan,G |请参阅部门| | 01/12/15-04/27/15 |
首先,这些是csv文件,所以请使用您的
csv
模块

# path to first file is ~/classes.csv
# path to second file is ~/abbr.csv

import csv

with open("~/classes.csv", 'rU') as classes_csv,\
     open("~/abbr.csv", 'rU') as abbr_csv:
    classes = csv.reader(classes_csv, delimiter='|')
    abbr = csv.reader(abbr_csv, delimiter=',')
    header = next(classes)

    abbr_dict = {line[1].strip():line[0].strip() for line in abbr}
    # create a lookup dictionary for your tags -> names

    class_tags = (line[2].strip("0123456789 ") for line in classes)
    # create a genexp for all the extant tags in ~/classes.csv

    result = {tag:abbr_dict[tag] for tag in class_tags if tag in abbr_dict}
然后,格式化结果应该很容易

for abbr,cls in result.items():
    print("The abbreviation for {} is {}".format(cls,abbr))

你得到了什么输出?很多无用的
子行拆分是:A
,我敢肯定,因为奇怪的第一个
打印
发出每个
子行的第一个字符。但是除了那张奇怪的
print
!请注意,
subsline.strip()
绝对没有可观察的效果。字符串是不可变的:对字符串调用一个方法,例如
strip
会返回一个不带前导和尾随空格的字符串副本——但您完全忽略了返回的值,并且显然假设这会以某种方式更改字符串(不会:字符串是不可变的!)这是我运行代码时遇到的错误:“abbr_dict={line[1].strip():line[0].strip()用于abbr}\u csv中的行。错误:在不带引号的字段中看到新行字符-您需要以通用换行模式打开文件吗?”@philipmcquity啊,因为您是在*nix而不是Windows上打开它的。我将进行编辑,但在这两种情况下都将打开模式更改为“rU”
。效果非常好。谢谢