Заменить повторяющуюся строку в #Python

#python #regex

#python #регулярное выражение

Вопрос:

У меня есть супер-повторяющаяся строка Lux , которая существует в нескольких переменных и именах, таких как: Luxcomments1718 (df) , Luxsub1718 (df) , Lux_Num_Comments (df.column) и Luxsub1718.csv (filename) . Как мне заменить все слово Lux другим словом, таким как Tux , не редактируя их одно за другим?

 Luxcomments1718 = df.loc[df.Family_Type == 'Lux']
Luxcomments1718 = Luxcomments1718[Luxcomments1718.Comments.str.contains('|'.join(selection))]
print(len(Luxcomments1718))

df2 = Luxcomments1718.Comments.str.split(expand=True).stack()
df2 = df2[df2.isin(selection)].value_counts()
Luxsub1718 = pd.DataFrame(df2)
Luxsub1718['Lux_Num_Comments']=Luxsub1718[0]
del Luxsub1718[0]
Luxsub1718.to_csv('Luxsub1718.csv')
  

Комментарии:

1. пожалуйста, предоставьте пример ввода и вывода, которые минимально воспроизводят вашу проблему и то, каким вы ожидаете решения.

2. вы можете легко сделать это в интерпретаторе, выбрав одно слово, вы выберете все то же самое.

3. @Cyber-Tech как сделать это только для выбранных ячеек? Команда Ctrl H влияет на все слова во всем файле .ipynb / .py.

Ответ №1:

  1. Любой современный текстовый редактор имеет возможности глобального изменения. В vi это :%s/Lux/Tux/g ; в большинстве редакторов MS это команда CTRL-h.
  2. Используйте внешнюю программу для внесения изменений. В семействе UNIX sed это фильтр командной строки, который использует те же ex макросы, что и vi .
  3. Напишите простую программу на Python для replace('Lux', 'Tux') всего входного файла.

Комментарии:

1. Я использую Google Collab. Команда Ctrl H позволяет найти и заменить весь файл. Как мне сделать это только для выбранных ячеек?

2. Вам нужно указать, как выбираются ячейки; это не является частью вашего первоначального вопроса. Независимо от этого, CTRL-f / CTRL-h позволяет вам «изменить и найти следующий», начиная с текущего местоположения курсора. Просто поместите курсор в верхнюю часть вашей ячейки, перейдите в поле изменить / заменить и используйте кнопку Изменить / найти, чтобы быстро просмотреть ячейку.

Ответ №2:

Одним из способов сделать это может быть добавление в ваш файл:

 with open("yourfile.py", "r") as start:
    with open("targetfile.py", "w") as end:
        for line in start:
            end.write(line.replace('Lux', 'Tux'))
  

Обратите внимание, что при этом создается другой файл. Я не думаю, что есть способ изменить сам файл, кроме как сделать это из IDE.