Pythonnal kapcsolatos kérdés.Van ennek más módja is?
Egy scriptet kellene írni, ami megszámolja hány mondat van a szövegben. Én így oldottam meg félig-meddig:
str="Ez egy mondat.Ez egy egy másik mondat.Ez is egy mondat.Ez mondat?"
str_count1=str.count(".")
str_count2=str.count("?")
print("A mondatok száma:",str_count1+str_count2)
Ezzel annyi a gond, hogy ha pl a szövegben valahol 2 vagy több pont/kérdőjel van, azt is mondatnak veszi. Hogyan tudnám ezt esetleg másképp megírni vagy kipótolni?
Köszönöm a válaszokat.
A str-t ne használd változónévnek, mert így hívják a string típust Pythonban. Kihagytad a felkiáltójelet. Az első ötlete jó: mivel a mondatvégi írásjel után a helyesírás szabályai szerint szóköznek kell lennie, ezért az alábbi kód helyes:
mondatok = "Ez egy mondat. Ez egy egy másik mondat?! Ez is egy mondat... Ez mondat?"
mondatok += " " # szóköz a végére, hogy az utolsó mondatot is megszámolja
print("A mondatok száma:" mondatok.count(". ") + mondatok.count("? ") + mondatok.count("! "))
Ezt még bonyolíthatod a szöveg tisztításával (whitespace levágása elöl-hátul, stb.), vagy a 2-es megjegyzését is figyelembe vegye, hogy a ... után új mondat kezdődik-e vagy sem (nagybetű vagy kisbetű következik). Az univerzális megoldás szerintem regex-et használna, de egy kezdőnek túl az bonyolult.
Amúgy igen, regex lenne a legcélszerűbb megoldás, az alábbi regex pl használható mind arra, hogy megszámold a mondatokat, mind pedig arra, hogy az egyes mondatokat (a felesleges whitespacek nélkül) ki tudd gyűjteni:
results = re.findall("/([^?!.]+[?!.]+)\s*(?=[^?!.]|$)/", myStr)
Ha érdekel ponosan hogyan épül fel, és melyik része mit csinál enneka regexnek, tudom javasolni a regex101.com oldalt, elég hasznos reguláris kifejezések írására és elemzésére.
Sőt, a lookahead a végére nem is kell, elég az alábbi is:
/([^?!.]+[?!.]+)\s*/
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!