VBA, Perl or Python

User avatar
kyk
Уже с Приветом
Posts: 31589
Joined: 21 Nov 2004 05:12
Location: камбуз на кампусе

VBA, Perl or Python

Post by kyk »

I have 2 students (class) lists: A and B.
The lists overlap, i.e.there are students that are present in both  A and B.

I need to create list C, which has all students from A that are not present in B

The lists are in Excel, for simplicity, in csv format.

What is easier to use  VBA script, Perl or  Python?

Which is easier to learn from the scratch and less prone to errors?
Last edited by kyk on 17 Sep 2019 05:47, edited 1 time in total.
Лучше переесть, чем недоспать! © Обратное тоже верно :umnik1:
Easbayguy
Уже с Приветом
Posts: 10632
Joined: 17 Jul 2003 22:11

Re: VBA, Perl or Python

Post by Easbayguy »

shell: join -v1 1.txt 2.txt
Ну сколько у вас тех студентов! Хотя сортировать надо.
ну или так: join -v1 --nocheck-order 1.txt 2.txt
Пх'нглуи мглв'нафх Ктулху Р'лайх угахнагл фхтагн
User avatar
kyk
Уже с Приветом
Posts: 31589
Joined: 21 Nov 2004 05:12
Location: камбуз на кампусе

Re: VBA, Perl or Python

Post by kyk »

Easbayguy wrote: 17 Sep 2019 05:24 Ну сколько у вас тех студентов!
Пару сотен в каждом списке. И таких списков десяток-другой раз-два в семестр.
Easbayguy wrote: 17 Sep 2019 05:24ну или так: join -v1 --nocheck-order 1.txt 2.txt

Windows shell? А в чём идея?

для каждого студента file содержит несколько data fields:
student ID; First name;Last name; другие данные.

Identification by student ID
Лучше переесть, чем недоспать! © Обратное тоже верно :umnik1:
User avatar
liamkin
Уже с Приветом
Posts: 2603
Joined: 19 Jun 2003 20:22
Location: USA

Re: VBA, Perl or Python

Post by liamkin »

Easbayguy wrote: 17 Sep 2019 05:24 shell: join -v1 1.txt 2.txt
Ну сколько у вас тех студентов! Хотя сортировать надо.
ну или так: join -v1 --nocheck-order 1.txt 2.txt
Я тоже за Шелл.
В свое время на Перле некую обработку CSV или TAB делимитэд писал. Там библиотечки готовые. Тоже самое должно в Питоне быть. На VBA я бы забил.
User avatar
kyk
Уже с Приветом
Posts: 31589
Joined: 21 Nov 2004 05:12
Location: камбуз на кампусе

Re: VBA, Perl or Python

Post by kyk »

liamkin wrote: 17 Sep 2019 18:39 Я тоже за Шелл.
В свое время на Перле некую обработку CSV или TAB делимитэд писал. Там библиотечки готовые. Тоже самое должно в Питоне быть. На VBA я бы забил.
"Kазнить нельзя помиловать" :mrgreen:

Шелл - eto Windows shell?

Если пользовать Windows shell, нужен ли в таком случае Perl/Python?
Лучше переесть, чем недоспать! © Обратное тоже верно :umnik1:
User avatar
kyk
Уже с Приветом
Posts: 31589
Joined: 21 Nov 2004 05:12
Location: камбуз на кампусе

Re: VBA, Perl or Python

Post by kyk »

Даёшь сотню просмотров, господа программёры
Лучше переесть, чем недоспать! © Обратное тоже верно :umnik1:
User avatar
Uzito
Уже с Приветом
Posts: 8239
Joined: 06 Feb 2002 10:01
Location: NJ, USA

Re: VBA, Perl or Python

Post by Uzito »

kyk wrote: 17 Sep 2019 04:48 I have 2 students (class) lists: A and B.
The lists overlap, i.e.there are students that are present in both  A and B.
I need to create list C, which has all students from A that are not present in B
The lists are in Excel, for simplicity, in csv format.
What is easier to use  VBA script, Perl or  Python?
Which is easier to learn from the scratch and less prone to errors?
На питоне пишется в десять строк максимум.
Открыть один файл, считать всё в список.
Открыть второй файл, считать всё в список.
2x Сконвертировать спискок в набор. set(list)
вычесть набор 2 из набора 1. set1 - set2
Записать полученый список в файл.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: VBA, Perl or Python

Post by Flash-04 »

Kyk, вот вместо того чтобы морочить людям голову кучей топиков, уже бы взял курс по питону и освоил.
Я на ём распознавание изображений делаю, а ты тут со списком студентов. Несерьёзно 8)

Питон прекрасно живёт под Windows.
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
liamkin
Уже с Приветом
Posts: 2603
Joined: 19 Jun 2003 20:22
Location: USA

Re: VBA, Perl or Python

Post by liamkin »

kyk wrote: 17 Sep 2019 19:23
liamkin wrote: 17 Sep 2019 18:39 Я тоже за Шелл.
В свое время на Перле некую обработку CSV или TAB делимитэд писал. Там библиотечки готовые. Тоже самое должно в Питоне быть. На VBA я бы забил.
"Kазнить нельзя помиловать" :mrgreen:

Шелл - eto Windows shell?

Если пользовать Windows shell, нужен ли в таком случае Perl/Python?
Unix shell. Если надо из под Виндоуз - выкачай busybox.exe - это Юникс шелл для виндов, в нем сразу включены многие утилитки, включая join. Еще есть UnxUtils на sourceForge. Незаменимая вещь, но сам шел там в ЮнксУтилс не рабочий. Для шелла - бизибокс.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: VBA, Perl or Python

Post by Flash-04 »

я вас умоляю - Windows 10 поддерживает WSL:
https://docs.microsoft.com/en-us/windows/wsl/faq

а если и этого мало, то и Hyper-V
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Re: VBA, Perl or Python

Post by f_evgeny »

На сегодня нужно знать и использовать Unix shell и Python. Это самые лучшие инструменты.
Дальше, все будет только хуже. Оптимист.
User avatar
Amirko
Уже с Приветом
Posts: 5199
Joined: 08 Jul 2002 09:36
Location: В глухой провинции, у моря...

Re: VBA, Perl or Python

Post by Amirko »

Powershell is native to Windows and works with excel files.
Cheers,
Amirko
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: VBA, Perl or Python

Post by Flash-04 »

да, в Windows лучше PowerShell, для Linux - shell & python, хотя как я уже сказал в Windows тоже живет.
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Re: VBA, Perl or Python

Post by f_evgeny »

Flash-04 wrote: 19 Sep 2019 16:37 да, в Windows лучше PowerShell, для Linux - shell & python, хотя как я уже сказал в Windows тоже живет.
А смысл? Кто-то еще работает в Виндовс?
Дальше, все будет только хуже. Оптимист.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: VBA, Perl or Python

Post by Flash-04 »

Гы.
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
liamkin
Уже с Приветом
Posts: 2603
Joined: 19 Jun 2003 20:22
Location: USA

Re: VBA, Perl or Python

Post by liamkin »

f_evgeny wrote: 20 Sep 2019 09:31
Flash-04 wrote: 19 Sep 2019 16:37 да, в Windows лучше PowerShell, для Linux - shell & python, хотя как я уже сказал в Windows тоже живет.
А смысл? Кто-то еще работает в Виндовс?
Если не вы не кондовый виндошный сисадмин, то учить ПомерШел смысла нет. Если сам МС добавляет Линуксовый тулсет в винды, то это верный знак. Облачный бизнес диктует свои законы! :umnik1:
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Re: VBA, Perl or Python

Post by f_evgeny »

liamkin wrote: 20 Sep 2019 16:27
f_evgeny wrote: 20 Sep 2019 09:31
Flash-04 wrote: 19 Sep 2019 16:37 да, в Windows лучше PowerShell, для Linux - shell & python, хотя как я уже сказал в Windows тоже живет.
А смысл? Кто-то еще работает в Виндовс?
Если не вы не кондовый виндошный сисадмин, то учить ПомерШел смысла нет. Если сам МС добавляет Линуксовый тулсет в винды, то это верный знак. Облачный бизнес диктует свои законы! :umnik1:
И не только, один из самых их успешных бизнесов - Azure тоже Линукс в основном. ИМХО.
Дальше, все будет только хуже. Оптимист.
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: VBA, Perl or Python

Post by M. Ridcully »

f_evgeny wrote: 20 Sep 2019 19:23
liamkin wrote: 20 Sep 2019 16:27
f_evgeny wrote: 20 Sep 2019 09:31
Flash-04 wrote: 19 Sep 2019 16:37 да, в Windows лучше PowerShell, для Linux - shell & python, хотя как я уже сказал в Windows тоже живет.
А смысл? Кто-то еще работает в Виндовс?
Если не вы не кондовый виндошный сисадмин, то учить ПомерШел смысла нет. Если сам МС добавляет Линуксовый тулсет в винды, то это верный знак. Облачный бизнес диктует свои законы! :umnik1:
И не только, один из самых их успешных бизнесов - Azure тоже Линукс в основном. ИМХО.
В каком смысле? Они не на Hyper-V?
Мир Украине. Свободу России.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: VBA, Perl or Python

Post by Flash-04 »

С подкручеными гайками:
https://azure.microsoft.com/en-us/resou ... lity-apps/
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
kyk
Уже с Приветом
Posts: 31589
Joined: 21 Nov 2004 05:12
Location: камбуз на кампусе

Re: VBA, Perl or Python

Post by kyk »

Easbayguy wrote: 17 Sep 2019 05:24join -v1 --nocheck-order 1.txt 2.txt
Попробовал на Linux

Code: Select all

join -v1 --nocheck-order A.csv  B.csv > C.csv
не даёт нужного результата. Студенты и их кол-во в С.csv такие же, как и в A.CSV, хотя должно быть меньше, так как B.csv overlaps A.csv.

Формат: (на каждой строке)
ID,Student_name,program,...
Распознавание должно идти по ID

Syntax for join:
For each pair of input lines with identical join fields, write a line to standard output. The default join field is the first, delimited by whitespace.
А у меня comma-separated и при этом есть пробелы внутри второго и последующих fields

Code: Select all

180682340,Doe,John,Honours Bachelor of Science,Biochemistry and Biotechnology,,1,raso2340@best.edu
180518070,Pupkin,Vasya,Honours Bachelor of Science,Biology,,1,amug8070@best.edu
Будет ли работать если вставить пробел после первой запятой? Как это сделать?

Кстати, сделал Linux на Win-10 машине за 15 мин:
(1) https://docs.microsoft.com/en-us/window ... tall-win10 => Ubuntu 18.04 LTS
(2) https://docs.microsoft.com/en-us/window ... ize-distro
Биллу Гейтсу - зачОт
Лучше переесть, чем недоспать! © Обратное тоже верно :umnik1:
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: VBA, Perl or Python

Post by Flash-04 »

а вот как оно было бы на змеюке:

Code: Select all

>>> list_1=["a", "b", "c", "d", "e"]
>>> list_2=["a", "f", "c", "m"]
>>> set(list_2) - set(list_1)
set(['m', 'f'])
>>> list(set(list_2) - set(list_1))
['m', 'f']
ессно элементами массива может быть что угодна, а для CSV у Питона есть парсер.
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
kyk
Уже с Приветом
Posts: 31589
Joined: 21 Nov 2004 05:12
Location: камбуз на кампусе

Re: VBA, Perl or Python

Post by kyk »

уважаемые линуксоиды, помогите вставить пробел после 1ой запятой в Linux shell
Лучше переесть, чем недоспать! © Обратное тоже верно :umnik1:
User avatar
liamkin
Уже с Приветом
Posts: 2603
Joined: 19 Jun 2003 20:22
Location: USA

Re: VBA, Perl or Python

Post by liamkin »

kyk wrote: 21 Sep 2019 21:37 уважаемые линуксоиды, помогите вставить пробел после 1ой запятой в Linux shell
sed -e 's/,/, /' filename

если все запятые надо с пробелом, то
sed -e 's/,/, /g' filename
User avatar
liamkin
Уже с Приветом
Posts: 2603
Joined: 19 Jun 2003 20:22
Location: USA

Re: VBA, Perl or Python

Post by liamkin »

kyk wrote: 21 Sep 2019 05:25
Easbayguy wrote: 17 Sep 2019 05:24join -v1 --nocheck-order 1.txt 2.txt
Попробовал на Linux

Code: Select all

join -v1 --nocheck-order A.csv  B.csv > C.csv
не даёт нужного результата. Студенты и их кол-во в С.csv такие же, как и в A.CSV, хотя должно быть меньше, так как B.csv overlaps A.csv.

Формат: (на каждой строке)
ID,Student_name,program,...
Распознавание должно идти по ID

Syntax for join:
For each pair of input lines with identical join fields, write a line to standard output. The default join field is the first, delimited by whitespace.
А у меня comma-separated и при этом есть пробелы внутри второго и последующих fields

Code: Select all

180682340,Doe,John,Honours Bachelor of Science,Biochemistry and Biotechnology,,1,raso2340@best.edu
180518070,Pupkin,Vasya,Honours Bachelor of Science,Biology,,1,amug8070@best.edu
Будет ли работать если вставить пробел после первой запятой? Как это сделать?

Кстати, сделал Linux на Win-10 машине за 15 мин:
(1) https://docs.microsoft.com/en-us/window ... tall-win10 => Ubuntu 18.04 LTS
(2) https://docs.microsoft.com/en-us/window ... ize-distro
Биллу Гейтсу - зачОт
сдается мне, что утилитка join любит tab-delimited файлы. CSV для них хуже яду. Сконвертируйте CSV в tab-delimited (Excel или любой фриварный обработчик таблиц).
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: VBA, Perl or Python

Post by Flash-04 »

CSV to TSV

Code: Select all

#!/usr/bin/env python
import csv, sys
csv.writer(sys.stdout, dialect='excel-tab').writerows(csv.reader(sys.stdin))
Not everyone believes what I believe but my beliefs do not require them to.

Return to “Вопросы и новости IT”