#python-3.x #list
#python-3.x #Список
Вопрос:
Я пытаюсь заменить расширение ‘.hpp’ расширением ‘.h’. Но проблема, как только я попытался добавить строку «filenames.remove (i_new)», она пропускает одно конкретное значение «sample.hpp». Вот мой код:
filenames = ["program.c", "stdio.hpp", "sample.hpp", "a.out", "math.hpp", "hpp.out",]
# Generate newfilenames as a list containing the new filenames
# using as many lines of code as your chosen method requires.
for i in filenames:
if i[-3:] == "hpp":
print(i)
i_new = i[:-3] "h"
print(i_new)
filenames.append(i_new)
print(filenames)
for i in filenames:
if i[-3:] == "hpp":
print(i)
filenames.remove(i)
print(filenames)
print('new_filenames', filenames)
Вот результат:
stdio.hpp
stdio.h
['program.c', 'stdio.hpp', 'sample.hpp', 'a.out', 'math.hpp', 'hpp.out', 'stdio.h']
sample.hpp
sample.h
['program.c', 'stdio.hpp', 'sample.hpp', 'a.out', 'math.hpp', 'hpp.out', 'stdio.h', 'sample.h']
math.hpp
math.h
['program.c', 'stdio.hpp', 'sample.hpp', 'a.out', 'math.hpp', 'hpp.out', 'stdio.h', 'sample.h', 'math.h']
stdio.hpp
['program.c', 'sample.hpp', 'a.out', 'math.hpp', 'hpp.out', 'stdio.h', 'sample.h', 'math.h']
math.hpp
['program.c', 'sample.hpp', 'a.out', 'hpp.out', 'stdio.h', 'sample.h', 'math.h']
new_filenames ['program.c', 'sample.hpp', 'a.out', 'hpp.out', 'stdio.h', 'sample.h', 'math.h']
Ответ №1:
я могу использовать:
new_filenames = [i.replace('.hpp','.h') for i in filenames]
print('new_filenames', newfilenames)
и вывод:
['program.c', 'stdio.h', 'sample.h', 'a.out', 'math.h', 'hpp.out']
Вот другой способ, с помощью ‘hpp.hpp’:
filenames = ["program.c", "stdio.hpp","hpp.hpp" ,"sample.hpp", "a.out", "math.hpp", "hpp.out"]
newfilenames = []
# newfilenames as a list containing the new filenames
for i in filenames:
if i[-4:] == ".hpp":
i = i[:-2]
newfilenames.append(i)
else: newfilenames.append(i)
print(newfilenames)
и вывод:
['program.c', 'stdio.h', 'hpp.h', 'sample.h', 'a.out', 'math.h', 'hpp.out']
Но кто-нибудь может мне помочь, что я упускаю???
Комментарии:
1. Рассматривали ли вы случай, когда имя файла
hpp.hpp
?2. hpp.hpp работал над программой answerd. но если я сделаю это с помощью программы, описанной в вопросе, она решит sample.h, но пропустит значение hpp.hpp при удалении или добавлении.
3. new_filenames = [i.replace(‘.hpp’,’.h’) для i в именах файлов] print(‘new_filenames’, newfilenames) — этот код не пропускает hpp.hpp