Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

Python: tælle bogstaver (æ, ø go å)

Af Monsterbruger tvs1 | 02-11-2016 16:07 | 2682 visninger | 5 svar, hop til seneste
Hej HOL :) Jeg sidder og arbejder på et program jeg skal bruge til min SRP. Programmet skal kunne tælle bogstaverne i et dokument (tekst.txt) samt skrive det samlede antal bogstaver. Mit problem opstår når bogstaverne æ, ø og å skal tælles :/ Jeg ved at problemet ligger i ascii_lowercase, men jeg får en fejl når jeg prøver at skifte den d med "æ", "ø", "å". Min kode ser således ud: from string import ascii_lowercase from collections import Counter import string chars = [] with open('/Users/Thomas/Desktop/klartekst.txt') as f: letters = Counter(letter for line in f for letter in line.lower() if letter in ascii_lowercase) with open('/Users/Thomas/Desktop/klartekst.txt') as f: for c in f.read(): chars.append(c) num_letters = 0 for c in chars: if c in string.ascii_letters: num_letters += 1 print letters print "" print (num_letters)
--
Macbook Pro late 2011 Spiller CS:GO og Lol og elsker at rode med elektronik :P
#1
dgaa1991
Elite Supporter
02-11-2016 16:21

Rapporter til Admin
Jeg lavede på et tidspunkt et program til at beregne lixscore for at lære python og havde samme problem men du kan se hvordann jeg gjorde :) http://hastebin.com[...]
--
Sidst redigeret 02-11-2016 16:22
#2
tvs1
Monsterbruger
02-11-2016 16:38

Rapporter til Admin
#1 Har lidt svært ved at forstå hvad du gør for at python kan læse æ,ø og å :/ Har det noget med "re" at gøre? (Ellers fedt program :) )
--
Macbook Pro late 2011 Spiller CS:GO og Lol og elsker at rode med elektronik :P
--
Sidst redigeret 02-11-2016 16:39
#3
Colaplus
Guru
02-11-2016 17:58

Rapporter til Admin
Står bogstaverne ud i en køre eller på hver sin linje? Ellers kan du jo lave readline i et loop indtil der ikke er flere linjer, med en counter på. names = open('names.txt', 'r') count = 0 file = names.readline() while file != '': file = names.readline() count += 1 print("These are the numbers of lines in names.txt:",num)
--
MSI Gaming 5 Z97 | Xeon E3-1230 v3 | 12GB DDR3 1600MHz | GTX 1060 3GB | Samsung 840 PRO 128GB + EVO 250GB + Sandisk PLUS 240GB + Intel 330 180GB
--
Sidst redigeret 02-11-2016 18:02
#4
dgaa1991
Elite Supporter
02-11-2016 19:51

Rapporter til Admin
#2 re er regular expressions som bruges til at finde mønstre i en tekst, man kan teste dem her http://regexr.com[...] som gør arbejdet noget simplere :) hvis du kigger på linje 11 har jeg defineret et regularexpression som hedder \w[a-zA-ZæøåÆØÅ]{6,} det gemmer alle ord som matcher udtrykket og gemmer dem som en liste, og så på linje 12 ber jeg den om at tælle antal elementer i den liste. Spørg endelig hvis du mangler hjælp så prøver jeg gerne at give en hånd med Betydning af reguar expression: \w Word. Matches any word character (alphanumeric & underscore). [ Character set. Match any character in the set.a-z Range. Matches a character in the range "a" to "z" (char code 97 to 122). A-Z Range. Matches a character in the range "A" to "Z" (char code 65 to 90). æ Character. Matches a "æ" character (char code 230). ø Character. Matches a "ø" character (char code 248). å Character. Matches a "å" character (char code 229). Æ Character. Matches a "Æ" character (char code 198). Ø Character. Matches a "Ø" character (char code 216). Å Character. Matches a "Å" character (char code 197). ] {6,} Quantifier. Match 6 or more of the preceding token.
--
#5
NitroBlast
Guru
02-11-2016 20:21

Rapporter til Admin
#3 Du går glip af en linie! ;-) Regulære udtryk er en mulighed, og det vil sikkert give indtryk, at bruge. Men Hvis du gerne vil konvertere til lowercase, og tælle derfra, så kig på følgende: #!/usr/bin/python #coding:utf-8 file = open('test.txt', 'r') ascii = file.readline() unilow = unicode(ascii, 'utf-8').lower() print unilow print unilow.count(unicode('æ', 'utf-8'))
--
http://xlinx.dk[...] i7 2600K, 16GB PC3-12800, GA-X68XP-UD4 R1, GTX 560Ti HAWK, 250GB 840 EVO
--
Sidst redigeret 02-11-2016 20:24

Opret svar til indlægget: Python: tælle bogstaver (æ, ø go å)

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning