Python中的For循环未正确地将列表划分为子集

2024-10-08 19:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

对Python来说太陌生了。你知道吗

我试图找到一种方法来确定一个字符串和变量串联的列表是否是另一个列表的子集。请参阅下面的代码和结果

y = ['test_sam_20190624.csv', 'test_phil_20190624.csv', 'test_bill_20190624.csv', 'test_jess_20190624.csv', 'test_issy_20190624.csv', 'test_clinton_20190624.csv']
x = ['sam', 'jack', 'bill', 'rodry', 'clinton']
print('\nFile list is ')
print(*y, sep="\n")
print('\nNeeded names are ')
print(*x, sep="\n")

datetoday = '20190624'

incl = [p for p in x if 'test'+p+datetoday+'.csv' in y]
not_incl = [p for p in x if 'test'+p+datetoday+'.csv' not in y]

print("\n Included")
print(*incl, sep="\m")
print("\n Not included")
print(*not_incl, sep="\n")

输出如下:

File list is 
test_sam_20190624.csv
test_phil_20190624.csv
test_bill_20190624.csv
test_jess_20190624.csv
test_issy_20190624.csv
test_clinton__20190624.csv

Needed names are 
sam
jack
bill
rodry
clinton

 Included


 Not included
sam
jack
bill
rodry
clinton

Process finished with exit code 0

但我肯定会期望incl = ['sam' 'bill 'clinton']作为输出?输出为:

 Included
sam
bill
clinton


 Not included
jack
rodry

我哪里出错了?也许是串在一起?你知道吗


Tags: csvintestsamnotsepprintincluded
3条回答

if语句中缺少下划线(\)。应该是这样的。你知道吗

incl = [p for p in x if 'test_'+p+'_'+datetoday+'.csv' in y]
not_incl = [p for p in x if 'test_'+p+'_'+datetoday+'.csv' not in y]

搜索中没有包含完整字符串:

incl = [p for p in x if 'test'+'_'+p+'_'+datetoday+'.csv' in y]
not_incl = [p for p in x if 'test'+'_'+p+'_'+datetoday+'.csv' not in y]

您在查找中忘记了下划线。你知道吗

[dkennetz@nodecn203  fun]$ python3.5 fun.py

File list is
test_sam_20190624.csv
test_phil_20190624.csv
test_bill_20190624.csv
test_jess_20190624.csv
test_issy_20190624.csv
test_clinton_20190624.csv

Needed names are
sam
jack
bill
rodry
clinton

 Included
sam\mbill\mclinton

 Not included
jack
rodry

似乎您忘记了连接中的_。你知道吗

尝试更改:

incl = [p for p in x if 'test'+p+datetoday+'.csv' in y]

incl = [p for p in x if 'test_'+p+'_'+datetoday+'.csv']

相同,不包括:

not_incl = [p for p in x if 'test'+p+datetoday+'.csv' not in y]

应该是

not_incl = [p for p in x if 'test_'+p+'_'+datetoday+'.csv' not in y]

现在你应该得到想要的输出了。你知道吗

相关问题 更多 >

    热门问题