Python 为什么在这个代码中没有结果?

Python 为什么在这个代码中没有结果?,python,Python,emp.csv 我可以得到下面这个代码的结果 index empno ename job mgr hiredate sal comm deptno 0, 7839, KING, PRESIDENT, 0, 1981-11-17, 5000, 0, 10 1, 7698, BLAKE, MANAGER, 7839, 1981-05-01, 2850, 0, 30

emp.csv

我可以得到下面这个代码的结果

  index   empno   ename   job        mgr      hiredate    sal comm    deptno
      0,  7839,   KING,   PRESIDENT,  0,      1981-11-17, 5000,   0,  10
      1,  7698,   BLAKE,  MANAGER,    7839,   1981-05-01, 2850,   0,  30
      2,  7782,   CLARK,  MANAGER,    7839,   1981-05-09, 2450,   0,  10
      3,  7566,   JONES,  MANAGER,    7839,   1981-04-01, 2975,   0,  20
      4,  7654,   MARTIN, SALESMAN,   7698,   1981-09-10, 1250,   1400,   30
      5,  7499,   ALLEN,  SALESMAN,   7698,   1981-02-11, 1600    300,    30
      6,  7844,   TURNER, SALESMAN,   7698,   1981-08-21, 1500,   0,  30
      7,  7900,   JAMES,  CLERK,      7698,   1981-12-11, 950,    0,  30
      8,  7521,   WARD,   SALESMAN,   7698,   1981-02-23, 1250,   500,    30
      9,  7902,   FORD,   ANALYST,    7566,   1981-12-11, 3000,   0,  20
      10, 7369,   SMITH,  CLERK,      7902,   1980-12-09, 800,    0,  20
      11, 7788,   SCOTT,  ANALYST,    7566    1982-12-22, 3000,   0,  20
      12, 7876,   ADAMS,  CLERK,      7788,   1983-01-15, 1100,   0,  20
      13, 7934,   MILLER, CLERK,      7782,   1982-01-11, 1300,   0,  10
结果:

import csv

job = input('Enter the job : ' )

with open("D:\R data\emp2.csv", 'r') as f:
     reader = csv.reader(f, delimiter=',')
     for row in reader:
          if all(s in job for s in row[2]):
              print (row[1],row[5],row[2])
但我不能得到上面的结果在下面的代码。没有结果

我想更改下面代码中的“job=‘saller’,‘ANALYST’”

Enter the job : SALESMAN,ANALYST
MARTIN 1250 SALESMAN
ALLEN 1600 SALESMAN
TURNER 1500 SALESMAN
WARD 1250 SALESMAN
FORD 3000 ANALYST
SCOTT 3000 ANALYST
如何在上面的代码中得到下面的结果

import csv

job = 'SALESMAN','ANALYST'

with open("D:\R data\emp2.csv", 'r') as f:
     reader = csv.reader(f, delimiter=',')
     for row in reader:
          if all(s in job for s in row[2]):
              print (row[1],row[5],row[2])

Job
必须是某种容器,才能与
in
关键字一起使用。这并不意味着您不能将其与用户输入一起使用。例如,您可以执行以下操作:

MARTIN 1250 SALESMAN
ALLEN 1600 SALESMAN
TURNER 1500 SALESMAN
WARD 1250 SALESMAN
FORD 3000 ANALYST
SCOTT 3000 ANALYST
此外,您正在读取的csv文件的路径中包含斜杠。斜杠用作字符串中的转义字符,因此在您的情况下根本不会读取文件,因为路径会引发错误。将此
与open(r“D:\r data\emp2.csv”,“r”)一起用作f:
。注意字符串前面的
r
。这告诉python按原样读取,而不考虑转义。或者,您可以使用双斜杠(从而实际上转义斜杠本身),例如:
将open(“D:\\R data\\emp2.csv”,“R”)作为f:

此外,您使用的索引是错误的Python使用零索引因此您必须检查
行[3]
中的关键字,并根据所需的输出返回
行[2],行[6],行[3]
,而不是检查行[2]并返回1,5和2

最后,你的支票错了。您希望看到的是,
row[3]
是否与您提供的字符串无关。如果作业中的第[3]行:

把我们所有的东西放在一起:

keywords = input('Provide the search strings separated by commas (','):\t').split(',')
演示:

使用提供的*.csv文件运行上述命令(您还缺少一些逗号)返回:


有两个问题:

  • 用户的输入必须分解为单个令牌,这可以通过
    job=input('enterthejob:')来完成。拆分(“,”)
  • 在我看来,
    如果第[2]行中的s的所有(s)都在作业中,
    。检查作业字符串中是否包含第2列的每个字符。我想如果作业中的行[3].strip()为
    ,则需要执行
    ,因为csv输入包含前导斜杠

job
更改为一个包含如下术语的列表:
job=['saller','ANALYST']
。请确保
s
不包含分隔符(“,”,在本例中)。非常感谢。谢谢你的回答,我能得到我想要的结果。@yuyeonsu鱼是暂时的,钓鱼才是最重要的。你对答案有什么不清楚的地方吗?我很高兴接受你的建议。
import csv

job = input('Provide the search strings separated by commas (','):\t').split(',')

with open(r"C:\Users\evkouni\Desktop\test.csv", 'r') as f:
    reader = csv.reader(f, delimiter=',')
    for row in reader:
        if row[3] in job:
            print(row[2], row[6], row[3])
#MARTIN 1250 SALESMAN
#ALLEN 1600 SALESMAN
#TURNER 1500 SALESMAN
#WARD 1250 SALESMAN
#FORD 3000 ANALYST
#SCOTT 3000 ANALYST