Python Înlocuirea șirurilor cu valori ale dicționarului

Pe baza intrărilor date:

Pot să fac waaaaaaaaaaaaay mai bine: DDDD !!!! Sunt sooooooooo exicted despre asta :))) Bine!

Dorite: ieșire

Pot sa fac o cale/LNG mai bine: D/LNG!/LNG Sunt asa/LNG exicted about it:)/LNG Good!/LNG

--- Provocări:

  1. better vs. soooooooooo >> we need to keep the first one as is but shorten the second
  2. for the second we need to add a tag (LNG) as it might have some importance for intensification for subjectivity and sentiment

---- Problemă: mesaj de eroare "paranteze dezechilibrate"

Vreo idee?

Codul meu este:

import re 

lengWords = {} # a dictionary of lengthened words 

def removeDuplicates(corpus):

data = (open(corpus, 'r').read()).split()
myString = " ".join(data)

for word in data:
    for chr in word: 
        countChr = word.count(chr)
        if countChr >= 3: 
            lengWords[word] = word+"/LNG"
            lengWords[word] = re.sub(r'([A-Za-z])\1+', r'\1', lengWords[word])
            lengWords[word] = re.sub(r'([\'\!\~\.\?\,\.,\),\(])\1+', r'\1', lengWords[word])                             

    for k, v in lengWords.items():
        if k == word: 
            re.sub(word, v, myString)
return myString
0
De ce toate backslash-urile și caracterele duplicate din cel de-al doilea grup de caractere? Nici nu vă face codul foarte ușor în ochi.
adăugat autor NPE, sursa
Încercați să înlocuiți orice succesiune de scrisori repetate cu o singură literă? Nu ar înlocui acest lucru "bun" cu "dumnezeu" atunci?
adăugat autor interjay, sursa
adăugat autor Katriel, sursa
: DDDD este mai mică decât: D/LNG. Același lucru este și pentru !!!!,))) și !!. Cred că ar trebui să limiteze traducerea la cazurile în care rezultatul este de fapt mai scurt decât originalul, cum ar fi waaaaaaaaaaaaay și sooooooooo.
adăugat autor jgomo3, sursa
@interjay, în acest caz, cred că ar trebui mai întâi să renunțe la orice cuvânt din dicționarul englez (sau lingvistic).
adăugat autor jgomo3, sursa
Paranteze neechilibrate pe care linie? Aceasta este o eroare de sintaxă? Nu trebuie să înconjurați comanda open în paranteze proprii.
adăugat autor Ansari, sursa

1 răspunsuri

Nu este soluția perfectă, dar nu am timp să-l rafinez acum - tocmai am vrut să te încep cu o abordare ușoară:

s = "I can do waaaaaaaaaaaaay better :DDDD!!!! I am sooooooooo exicted about it :))) Good !!"
re.sub(r'(.)(\1{2,})',r'\1/LNG',s)
>> 'I can do wa/LNGy better :D/LNG!/LNG I am so/LNG exicted about it :)/LNG Good !!'
0
adăugat
Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.