#!/bin/bash
# ideone boilerplate: run in temp dir
t=$(mktemp -d -t ideone.XXXXXXXX) || exit
trap 'rm -rf "$t"' ERR EXIT
cd "$t"
cat <<\: >input.csv
COLUMN 1,COLUMN 2
3-Entrepreneurship,"innovation, daily"
,countless
2-Police/Enforcement,"innocent, protect"
2-Bathroom:home room,toilet handle
3-Companies,née dresses
2-Sense of Smell,odorless
3-Entrepreneurship,old ideas
3-Entrepreneurship,¡new income streams!
3-Companies,Zoë’s food store
,many
2-Police/Enforcement,crime
2-Bathroom:home room,bath room
,ring
3-Companies,móvíl résumés
2-Sense of Smell,musty smell
3-Entrepreneurship,good publicity guru!
3-Companies,Señor
:
cat <<\: >prog.py
#!/usr/bin/env python3
import csv
from pathlib import Path
with open('input.csv') as csvin:
# skip header
reader = csv.reader(csvin)
reader.__next__()
for row in reader:
if row[0]:
if '/' in row[0]:
Path(row[0]).parent.mkdir(parents=True, exist_ok=True)
with open(row[0] + '.txt', 'a+') as txtout:
txtout.write(row[1] + '\n')
:
python3 prog.py
tail *.txt */*.txt
IyEvYmluL2Jhc2gKCiMgaWRlb25lIGJvaWxlcnBsYXRlOiBydW4gaW4gdGVtcCBkaXIgCnQ9JChta3RlbXAgLWQgLXQgaWRlb25lLlhYWFhYWFhYKSB8fCBleGl0CnRyYXAgJ3JtIC1yZiAiJHQiJyBFUlIgRVhJVApjZCAiJHQiCgpjYXQgPDxcOiA+aW5wdXQuY3N2CkNPTFVNTiAxLENPTFVNTiAyCjMtRW50cmVwcmVuZXVyc2hpcCwiaW5ub3ZhdGlvbiwgZGFpbHkiCixjb3VudGxlc3MKMi1Qb2xpY2UvRW5mb3JjZW1lbnQsImlubm9jZW50LCBwcm90ZWN0IgoyLUJhdGhyb29tOmhvbWUgcm9vbSx0b2lsZXQgaGFuZGxlCjMtQ29tcGFuaWVzLG7DqWUgZHJlc3NlcwoyLVNlbnNlIG9mIFNtZWxsLG9kb3JsZXNzCjMtRW50cmVwcmVuZXVyc2hpcCxvbGQgaWRlYXMKMy1FbnRyZXByZW5ldXJzaGlwLMKhbmV3IGluY29tZSBzdHJlYW1zIQozLUNvbXBhbmllcyxab8Or4oCZcyBmb29kIHN0b3JlCixtYW55CjItUG9saWNlL0VuZm9yY2VtZW50LGNyaW1lCjItQmF0aHJvb206aG9tZSByb29tLGJhdGggcm9vbQoscmluZwozLUNvbXBhbmllcyxtw7N2w61sIHLDqXN1bcOpcwoyLVNlbnNlIG9mIFNtZWxsLG11c3R5IHNtZWxsCjMtRW50cmVwcmVuZXVyc2hpcCxnb29kIHB1YmxpY2l0eSBndXJ1IQozLUNvbXBhbmllcyxTZcOxb3IKOgoKY2F0IDw8XDogPnByb2cucHkKIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKaW1wb3J0IGNzdgpmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKCndpdGggb3BlbignaW5wdXQuY3N2JykgYXMgY3N2aW46CiAgICAjIHNraXAgaGVhZGVyCiAgICByZWFkZXIgPSBjc3YucmVhZGVyKGNzdmluKQogICAgcmVhZGVyLl9fbmV4dF9fKCkKICAgIGZvciByb3cgaW4gcmVhZGVyOgogICAgICAgIGlmIHJvd1swXToKICAgICAgICAgICAgaWYgJy8nIGluIHJvd1swXToKICAgICAgICAgICAgICAgIFBhdGgocm93WzBdKS5wYXJlbnQubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQogICAgICAgICAgICB3aXRoIG9wZW4ocm93WzBdICsgJy50eHQnLCAnYSsnKSBhcyB0eHRvdXQ6CiAgICAgICAgICAgICAgIHR4dG91dC53cml0ZShyb3dbMV0gKyAnXG4nKQo6CgpweXRob24zIHByb2cucHkKCnRhaWwgKi50eHQgKi8qLnR4dA==