Forum » Programiranje » python regex split
python regex split
pizdarija1 ::
Zdravo, prosil bi za pomoč
Tale regex mi povzroča težave, rad bi splital tekst z vejicami pri tem pa naj se ne splita če je vejica med številkami - ta vejica se ignorira.
Zaenkrat imam takole:
Array rezultat bi moral biti tak:
Tale regex mi povzroča težave, rad bi splital tekst z vejicami pri tem pa naj se ne splita če je vejica med številkami - ta vejica se ignorira.
Zaenkrat imam takole:
import re str = 'a,b,c 1,2,abc' strs = re.split(',', str)
Array rezultat bi moral biti tak:
a b c 1,2 abc
showsover ::
kako naj python ve, kaj je vejica seznama in kaj decimalna?
eno ali drugo spremeni, a ne
eno ali drugo spremeni, a ne
korenje3 ::
Sicer ne poznam python, sam verjetno moraš uporabit regex. /\d*(,?)\d*/ neki tazga
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W
Zgodovina sprememb…
- spremenil: korenje3 ()
showsover ::
naredi nek konverter, ki ti bo zamenjal ločila po takšnih pravilih, ki so določena, da ločiš navaden item od itema z decimalno številko.
če je tebi jasno, kako se itemi razlikujejo (in res ne vem, če je edina možnost "(\w+ \d+\,\d+)"), moraš isto dopovedati pythonu.
mislim, da boš moral dodati še kak input, če hočeš kakovosten odgovor.
"(\w+( \d+\,\d+)?)" - ne vem to so vse ugibanja; torej pobereš alfanumerične znake z opcijskih dodatkom presledka vsaj ene cifre, vejice in spet vsaj ene cifre...
razumeš? moraš pač biti jasen.
če je tebi jasno, kako se itemi razlikujejo (in res ne vem, če je edina možnost "(\w+ \d+\,\d+)"), moraš isto dopovedati pythonu.
mislim, da boš moral dodati še kak input, če hočeš kakovosten odgovor.
"(\w+( \d+\,\d+)?)" - ne vem to so vse ugibanja; torej pobereš alfanumerične znake z opcijskih dodatkom presledka vsaj ene cifre, vejice in spet vsaj ene cifre...
razumeš? moraš pač biti jasen.
Zgodovina sprememb…
- spremenilo: showsover ()
HotBurek ::
input = "a 4,9,9,b,c 1,2,abcdef,ff,d 1,e 2,ff"; alpha = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; items = []; item = ""; lock = False; for i in range(0, len(input)): char = input[i]; if char in alpha: if lock == False: item += char; else: if item.endswith(","): item = item[0: len(item) - 1]; items.append(item); item = ""; lock = False; item += char; elif char == ",": if lock == False: items.append(item); item = ""; lock = False; else: item += char; elif char == " ": item += char; lock = True; elif char in numbers: item += char; if i == len(input) - 1: items.append(item); for i in range (0, len(items)): print(str(i) + "=" + str(items[i]));
0=a 4,9,9 1=b 2=c 1,2 3=abcdef 4=ff 5=d 1 6=e 2 7=ff
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
Monster ::
Quick and dirty ...
repl.it
Za testiranje regexa - https://regex101.com/ (https://regex101.com/r/ifySeU/1)
import re str = 'a,b,c 1,2,abc' strs = re.split('(\w+),|(\D+\d*,?\d*),', str) print([s for s in strs if s])
repl.it
Za testiranje regexa - https://regex101.com/ (https://regex101.com/r/ifySeU/1)
Ka zaboga...
Zgodovina sprememb…
- spremenil: Monster ()
HotBurek ::
import re; input = "a 4,9,9,b,c 1,2,abcdef,ff,d 1,e 2,ff"; compile_num = re.compile("\d,[a-z]"); compile_alpha = re.compile("[a-z],[a-z]"); matches_num = compile_num.finditer(input); matches_alpha = compile_alpha.finditer(input); for match in matches_num: input = input[0:match.start() + 1] + ";" + input[match.end() - 1:]; for match in matches_alpha: input = input[0:match.start() + 1] + ";" + input[match.end() - 1:]; print("fix=" + str(input)); items = input.split(";"); for i in range(0, len(items)): print(str(i) + "=" + str(items[i]));
fix=a 4,9,9;b;c 1,2;abcdef;ff;d 1;e 2;ff 0=a 4,9,9 1=b 2=c 1,2 3=abcdef 4=ff 5=d 1 6=e 2 7=ff
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [python] project euler problemOddelek: Programiranje | 1282 (834) | Spura |
» | Python - pomoč (strani: 1 2 3 )Oddelek: Programiranje | 18038 (8786) | black ice |
» | [Python] Domači nalogiOddelek: Programiranje | 3060 (1950) | ragezor |
» | c# regularni izrazOddelek: Programiranje | 2015 (1713) | darkolord |
» | [C#] Prosim pomagajte! Potrebujem program, ki bi pobiral podatke iz ene straniOddelek: Programiranje | 2746 (2356) | David1994 |