Поскольку Loop в Python неправильно разделяет список на подмножества - PullRequest
1 голос
/ 26 июня 2019

плохо знакомы с 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

Куда я иду не так?Может быть, в конкатенации строк?

Ответы [ 4 ]

2 голосов
/ 26 июня 2019

Похоже, вы забыли _ в вашей конкатенации.

Попробуйте изменить:

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:

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]

Теперь вы должны получить желаемый результат.

2 голосов
/ 26 июня 2019

Вы не указали полную строку в своем поиске:

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
1 голос
/ 26 июня 2019

Вам не хватает подчеркивания (_) в операторе 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]
0 голосов
/ 27 июня 2019

Как и все предыдущие ansers предполагают, что не хватает подчеркивания (_) в строках. Если мы удалим эти подчеркивания, он не получит правильную строку.

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...