вставьте символы в строку, если предыдущие четыре символа являются числом - PullRequest
0 голосов
/ 06 ноября 2019

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

Например, следующее:

2013 Presidential2008 Presidential2016 Parliamentary - Majoritarian Runoff2016 Parliamentary - Majoritarian Rerun

будет преобразовано в:

2013 Presidential, 2008 Presidential, 2016 Parliamentary - Majoritarian Runoff2016 Parliamentary - Majoritarian Rerun

До сих пор у меня есть:

for char in s:
...     if char.isalpha():
            ???

Я также пытался с Javascript:

function isNumber(c) {
    return (i >= '0' && i <= '9');
}
for (var x = 0; x < text.length; x++)
{
    var c = text.charAt(x);
    if isNumber(i){
        // add a ", " before and move to the next char which is a letter
        text[:x] + ', ' + text[x:]
    }   
}

Но он возвращает: Uncaught SyntaxError: Unexpected identifier

Ответы [ 2 ]

4 голосов
/ 06 ноября 2019

Просмотр string.prototype.replace ( mdn ).

let input = '2013 Presidential2008 Presidential2016 Parliamentary - Majoritarian Runoff2016 Parliamentary - Majoritarian Rerun'

//           replace:   (non-digit)(digit)
let output = input.replace(/([^\d])(\d)/g, '$1, $2');
//                           with:   non-digit, digit

console.log(output);

Если на вашем входе будут цифры, которые уже следуют за пробелом, вы можете не добавлять к ним запятые, слегка изменив регулярное выражение:

let input = '1 noSpace2 space 3';

//  replace:   (non-digit nor space)(digit)
let output = input.replace(/([^\d ])(\d)/g, '$1, $2');
//                           with:   non-digit, digit

console.log(output);
3 голосов
/ 06 ноября 2019

Использование регулярных выражений в Python:

import re

text = '2013 Presidential2008 Presidential2016 Parliamentary - Majoritarian Runoff2016 Parliamentary - Majoritarian Rerun'

pat = re.compile(r'([^\d\s])(\d+)')
pat.sub(r'\1, \2', text)

Вывод:

'2013 Presidential, 2008 Presidential, 2016 Parliamentary - Majoritarian Runoff, 2016 Parliamentary - Majoritarian Rerun'

Образец: https://regex101.com/r/tDdfsc/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...