Как вывести на экран информацию про людей у которых фамилия начинается с гласной?

import re
import string

filename = input('Enter name of file: ')
file = open(filename, 'r')
arr = []
arr1 = []

arr = file.readlines()

for i in arr:
    arr1.append(i.strip().split(','))
for i in arr1():
    if(str(i[0])).startwith((a, e, i, o, u, A, E, I, O, U)):
        print(str(i[0]), str(i[1]), str(i[2]))
file.close()

Каким образом можно заставить программу искать по ключам фамилии[0], которые начинаются с гласной?

Програма читает этот файл:

Psih,675,25.05.2005
Alanov,534,24.05.2005
Okun,174,23.05.2005
Pako,832,22.05.2005
Kell,195,21.05.2005
Iren,273,20.05.2005

И на экран должно выводить так:

Alanov,534,24.05.2005
Okun,174,23.05.2005
Iren,273,20.05.2005

Ответы (4 шт):

Автор решения: MaxU

Если строки надо выводить в неизменном виде, то нет смысла парсить CSV:

with open(filename) as file:
    for line in file:
        if re.match(r"[aeiouy]", line, flags=re.I):
            print(line.strip())

результат:

Alanov,534,24.05.2005
Okun,174,23.05.2005
Iren,273,20.05.2005
→ Ссылка
Автор решения: Shamus Rezol

Думаю, что ваш код вполне жизнеспособен. Но startswith принимает только один аргумент, что значит вам следует модифицировать его следующим образом: for char in ['a', 'e', 'i', 'o', 'u']: if i[0].lower().startswith(char): print(i). Или можно проверить первую букву фамилии на вхождение в список гласных: if i[0].lower()[0] in ['a', 'e', 'i', 'o', 'u']: print(i)

→ Ссылка
Автор решения: Manul74
arr = file.readlines()
t = ['A', 'E', 'I', 'O', 'U','Y']
for i in arr:
    arr1.append(i.strip().split(','))
for x in arr1:
    if x[0][0] in t:
        print(x)
file.close()


['Alanov', '534', '24.05.2005']
['Okun', '174', '23.05.2005']
['Iren', '273', '20.05.2005']
→ Ссылка
Автор решения: MaxU

Также можно воспользоваться модулем Pandas:

import pandas as pd   #  pip install pandas

df = pd.read_csv(r"D:\download\data.csv", header=None, names=["name", "val", "date"])

получим DataFrame:

In [87]: df
Out[87]:
     name  val        date
0    Psih  675  25.05.2005
1  Alanov  534  24.05.2005
2    Okun  174  23.05.2005
3    Pako  832  22.05.2005
4    Kell  195  21.05.2005
5    Iren  273  20.05.2005

фильтруем фрейм, оставляя только те строки, где name начинается с гласной буквы:

res = df[df["name"].str.contains(r"^[aeiouy]", case=False)]

результат:

In [89]: res
Out[89]:
     name  val        date
1  Alanov  534  24.05.2005
2    Okun  174  23.05.2005
5    Iren  273  20.05.2005

результат можно записать в новый CSV файл:

res.to_csv(r"result.csv", index=False)
→ Ссылка