вводить характеры в string, если четыре предыдущих характера - число

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

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

2013 Presidential2008 Presidential2016 Parliamentary - Majoritarian Runoff2016 Parliamentary - Majoritarian Rerun

Вы были бы преобразованы в:

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

Пока я имею:

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

Я пробовал также с javascript:

function isNumber(i) {
    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

1
задан 07.11.2019, 11:33
3 ответа

AГ±ado новость soluciГіn вводя запятую и место между группой 1 (Не dГ-gitos) и группа 2 (dГ-gitos): Вышедшие

import re

cadena = "2013 Presidential2008 Presidential2016 Parliamentary - Majoritarian Runoff2016 Parliamentary - Majoritarian Rerun"
print(re.sub(r'(\D)(\d)', r'\1, \2', cadena))

:

2013 Presidential, 2008 Presidential, 2016 Parliamentary - Majoritarian Runoff, 2016 Parliamentary - Majoritarian Rerun
1
ответ дан 01.12.2019, 12:33

Ты можешь использовать регулярные выражения, которые служат для того, чтобы найти главные файлы в цепях текста, в этом случае buscarГ - в nГєmeros в твоей цепи, которая они находятся следующий за буквой (если только пробует искать nГєmeros и уже эта довольно письменная цепь volverГЎ в aГ±adir место и запятая), для того, чтобы после использовать replace и для того, чтобы заменить ее.

import re

cadena = "2013 Presidential2008 Presidential2016 Parliamentary - Majoritarian Runoff2016 Parliamentary - Majoritarian Rerun"
coincidencias = set(re.findall(r"[a-zA-Z][0-9]+", cadena))

for i in coincidencias:
    cadena = cadena.replace(i, f", {i[1:]}")

print(cadena)

Полученные

2013 Presidentia, 2008 Presidentia, 2016 Parliamentary - Махоритариан Руноф, 2016 Parliamentary - Махоритариан Рерун

Объяснение

Команда findall возвращает список со всеми совпадениями, находившимися в цепи, ввиду регулярного выражения, которого в этом примере было [a-zA-Z][0-9]+, эта expresiГіn то, что он делает, состоит в том, чтобы находить цепи, у которых есть буква, уже будьте minГєscula или прописная буква [a-zA-Z] и продолжите какой-либо или больше dГ-gitos [0-9]+ (для этого он больше в регулярном выражении), уже только договорись о том, чтобы повторить на совпадениях и remplazar, опуская первый характер, который является буквой.

1
ответ дан 01.12.2019, 12:33
  • 1
    Эта solució n - ошибочно и вероятно OP он не понял. Вывод удаляет характер (Presidential > > Presidentia, Runoff > > Runof) – Adrián Sanz Wallace 07.11.2019, 02:41
  1. то, что он делает, состоит bГЎsicamente, в том, чтобы подтверждать, где находятся числа в string, и в том, чтобы сохранять их в списке.
  2. После удаляет из этой повторенных, чтобы предотвращать, чем, заменив в первоначальном string aГ±ada запятые и место больше.
  3. Заменяет в первоначальном string числа, из-за того же числа включая запятой и места
  4. И в конце концов подтверди двух первых dГ-gitos, для того, чтобы в случае, если string начинался из-за числа он не включил запятую и место в начале string.
import re

string = "2013 Presidential2008 Presidential2016 Parliamentary - Majoritarian Runoff2016 Parliamentary - Majoritarian Rerun"

matches = re.findall("(\d+)", string)

matches = list(dict.fromkeys(matches))

for num in matches:
    string=string.replace(num, ', '+num)

if  string[0]+string[1]==', ':
    string=string[2:]

print(string)

не бери это как лучший способ это делать, а как путеводитель, откуда получать лучшие идеи

1
ответ дан 01.12.2019, 12:33