У нас есть устаревшая система, которая экспортирует отчеты в виде файлов .txt, но почти во всех случаях, когда указывается дата, она идет после обозначения валюты и выглядит следующим образом: 25.0002/14/18 (25 bucks on feb 14th) или 287.4312/08/17.

Есть ли простой способ разобрать . и добавить пробел с двумя пробелами справа, чтобы отделить строку в Python? Любая помощь с благодарностью!

0
Ryan 16 Апр 2019 в 15:57

2 ответа

Лучший ответ

Код ниже добавит пробел между валютой и данными, заданными строкой.

import re 
my_file_text = "This is some text 287.4312/08/17"
new_text = re.sub("(\d+\.\d{2})(\d{2}/\d{2}/\d{2})", r"\1 \2", my_file_text)
print(new_text)

ВЫХОД

'This is some text 287.43 12/08/17'

REGEX

(\d+\.\d{2}): эта часть регулярного выражения захватывает валюту в своей собственной группе, предполагается, что в ней будет любое количество цифр (> 1) перед ., а затем только две цифры после, поэтому что-то вроде (1000,25) будет захвачено правильно, а (1000,205) и (0,25) - нет.

(\d{2}/\d{2}/\d{2}): эта часть фиксирует дату, она предполагает, что часть дат, день, месяц и год, всегда будут представлены двумя цифрами и разделены знаком /.

0
Ahmed Ragab 16 Апр 2019 в 14:08

Возможно, более эффективные методы, но простой способ может быть:

def fix(string):
    if '.' in string:
        part_1, part_2 = string.split('.')
        part_2_fixed = part_2[:2] + ' ' + part_2[2:]
        string = part_1 + '.' + part_2_fixed
    return string
In [1]: string = '25.0002/14/18'
In [2]: fix(string)                                                                                                                                                               
Out[2]: '25.00 02/14/18'
0
Kathy Rindhoops 16 Апр 2019 в 13:13