» »

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:
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

gtfo ::

kako naj python ve, kaj je vejica seznama in kaj decimalna?
eno ali drugo spremeni, a ne

pizdarija1 ::

ločil ne morem spremeniti, ker dobim tak tekst iz drugega vira

korenje3 ::

Sicer ne poznam python, sam verjetno moraš uporabit regex. /\d*(,?)\d*/ neki tazga
Pentium I7 3770k@4,5Ghz; 16GB RAM@2133MHz; ASUS Radeon 6850 1GB;
SSD Kingston hyperX 240GB; 30" HPZR30w monitor;
BeQuiet! E9 580W; http://www.the-nox.com

Zgodovina sprememb…

  • spremenil: korenje3 ()

gtfo ::

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.

Zgodovina sprememb…

  • spremenilo: gtfo ()

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

Zgodovina sprememb…

  • spremenilo: HotBurek ()

Monster ::

Quick and dirty ...

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

Zgodovina sprememb…

  • spremenilo: HotBurek ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[python] project euler problem

Oddelek: Programiranje
15830 (382) Spura
»

Python - pomoč (strani: 1 2 3 )

Oddelek: Programiranje
10313740 (4488) black ice
»

[Python] Domači nalogi

Oddelek: Programiranje
332087 (977) ragezor
»

c# regularni izraz

Oddelek: Programiranje
201641 (1339) darkolord
»

[C#] Prosim pomagajte! Potrebujem program, ki bi pobiral podatke iz ene strani

Oddelek: Programiranje
211887 (1497) David1994

Več podobnih tem