Попробуйте удалить последний "," каждой строки, но текущая логика удаляет только последний:

import re

x = """
A,B,C,
1,2,3,
4,5,6,
7,8,9,
"""
x = re.sub(",$","",x,re.MULTILINE)
print(x)

Выход:

A,B,C,
1,2,3,
4,5,6,
7,8,9

Ожидаемый результат:

A,B,C
1,2,3
4,5,6
7,8,9
1
lucky1928 27 Сен 2022 в 21:53
Четвертый аргумент в методе re.sub() — это «количество», указывающее, сколько замен нужно сделать. Вы указали re.MULTILINE для подсчета, что не имеет особого смысла. Оба ответа ниже показывают правильный способ предоставления необходимых аргументов (используя именованные аргументы или предоставляя 0 для счета в позиции 4-го аргумента).
 – 
JNevill
27 Сен 2022 в 22:00

2 ответа

re.sub(regex, subst, test_str, 0, re.MULTILINE)

Флаг - 5-й аргумент.

1
vks 27 Сен 2022 в 21:56

Это должно сделать это:

import re

x = """
A,B,C,
1,2,3,
4,5,6,
7,8,9,
"""
# regix to remove all commas at the end of each line
x = re.sub(r',$', '', x, flags=re.M)
# '$', means the end of the line
# '', means replace with nothing
# x, os the string to be searched
# flags=re.M, means to search the whole string, not just the first line
# flags=re.MULTILINE does the same job
print(x)

Output- >

A,B,C
1,2,3
4,5,6
7,8,9
1
Hannon qaoud 27 Сен 2022 в 22:02
Ваш ответ имел бы значительно большую ценность, если бы вы объяснили, как вы изменили код и почему.
 – 
CryptoFool
27 Сен 2022 в 22:00