как удалить точку с запятой в конце элемента из текстового файла в список

Как удалить эту точку с запятой (;) из текстового файла. содержимое моего текстового файла:

    201911007,1,28;
    201203008,1,28;
    199710014,1,28;
    201612010,1,28;
    201710017,1,28;

Затем python читает его, у него всегда есть точка с запятой в конце 28, если я запускаю коды

    with open("empMR.txt", 'r') as files:
    for dln in files:
        dln = dln.strip()
        if len(dln) >= 1:
            lii = dln.split(",")
            MR_empno.append(lii[0].strip())
            month.append(lii[1].strip())
            days_work.append(lii[2].strip())
print(days_work)

ВЫВОД: ['28;', '28;', '28;', '28;', '28;'] Я хочу удалить точку с запятой (;) на каждом выходе Ожидаемый результат [28, 28, 28, 28, 28]

4 ответа

Есть несколько способов решить эту проблему.

  • Взгляните на .replace() метод, что-то вроде dln.replace(';', '') может быть полезно
  • Если все ваши строки выглядят одинаково, вы можете удалить последний символ - dln = dln[:-1] может быть полезно

Какой из них вы выберете, зависит от того, насколько вы уверены в том, что данные всегда будут выглядеть одинаково, и от того, какие методы вам удобнее.

Если вы хотите удалить; навсегда из вашего файла. Откройте файл с помощью vim

vi filename
then press esc
enter :%s/;$//g then enter
save the file esc-->:wq --> enter

Если вы хотите обработать это на Python

with open('filename.txt','r') as fp:
    data=fp.read()
data = data.splitlines()
data = [line.strip(';') for line in data]

Просто включите символы, которые хотите удалить (включая;)

for dln in files:
    dln = dln.strip("; \n\r\t")

вам не нужно добавлять дополнительные вызовы к другим функциям и, особенно, не нужны регулярные выражения только для этого (могут быть другие веские причины для использования регулярных выражений, см. пример ниже)

data = re.findall("([^,]*)\s*,\s*([^,]*)\s*,\s*([^;]*)\s*;",files.read())
for empNo,monthNo,days_work in data:
    print("E:",empNo, "Month:",monthNo, "Days Worked:",days_work)

Регулярные выражения - мощные инструменты для строк.

import re
in_list = ['28;', '28;', '28;', '28;', '28;']
out_list = [re.sub(';', '', item) for item in in_list]
print(out_list)
['28', '28', '28', '28', '28']
Другие вопросы по тегам