我想从名单中删除第二个名字,以便以后进一步处理。
这段代码创建了一个文件,文件名改变了,但文件名保持不变。我对python不太了解,所以如果有人解释我们做错了什么,我会很感激。
import csv
import os
def remove_second_names(full_name):
name_parts = full_name.split()
first_name = name_parts[0]
first_name = first_name[0].upper() + first_name[1:].lower()
return first_name
csv_file_path = input("Geben Sie den Pfad zur CSV-Datei ein: ")
try:
with open(csv_file_path, 'r', newline='') as file:
reader = csv.reader(file, delimiter='\t')
rows = [row for row in reader]
for i, row in enumerate(rows):
if len(row) >= 2:
row[1] = remove_second_names(row[1])
rows[i] = row
base_file_name = os.path.basename(csv_file_path)
output_file_path = base_file_name.replace('.csv', '_bearbeitet.csv')
with open(output_file_path, 'w', newline='') as file:
writer = csv.writer(file, delimiter='\t')
writer.writerows(rows)
print("Die bearbeiteten Daten wurden in die Datei '{}' geschrieben.".format(output_file_path))
except FileNotFoundError:
print("Die angegebene Datei wurde nicht gefunden.")
except Exception as e:
print("Ein Fehler ist aufgetreten:", str(e))
CSV文件看起来像这样:
Name;Firstname Secondname;10EH2;
Name;Firstname-Secondname;10EH3;
Name;Firstname Secondname OtherName;10EH3;
我希望在运行代码后它看起来像这样(显然将是真实的名称而不是占位符):
Name;Firstname;10EH2;
Name;Firstname;10EH3;
Name;Firstname;10EH3;
2条答案
按热度按时间ecr0jaav1#
你可能想看看
re
包,因为它允许你相当容易地分割像" "
和"-"
这样的“非单词”字符。这应该给你给予:
cclgggtu2#
首先,在迭代列表(或任何可迭代对象)时更改列表被认为是不好的做法。通常情况下,最好是例如。准备一个“result”iterable,你可以在其中添加你想要的结果。
然后有几点应该可以帮助你:
csv.reader
和csv.writer
中将分号指定为制表符str.split()
,它只按白色空格分隔,但您的示例还显示了可能使用连字符作为分隔符,而这种情况没有得到解决