Avatar billede msdb Nybegynder
02. december 2010 - 19:17 Der er 19 kommentarer og
1 løsning

Læsning af 'æøå' fra dokument i Python

Jeg skal behandle noget tekst fra en .txt-fil i mit Python-program men den læser Æ, Ø og Å som xml-kode. F.eks. så bliver ordet 'æble' delt i 2:
['\xc6', 'ble']
Hvordan får jeg det til at læse de tre bogstaver så de vises ved print?
Avatar billede arne_v Ekspert
02. december 2010 - 19:26 #1
Er du sikkee paa at det er laesningen og ikke print??
Avatar billede msdb Nybegynder
02. december 2010 - 19:33 #2
Det er nok print jeg forsøgte at formulere mig frem til, jo.
Avatar billede arne_v Ekspert
02. december 2010 - 22:30 #3
Virker det hvis du skriver til en ny tekst fil og åbner den med et Windows program, men det ser forkert ud i en kommando prompt?
Avatar billede msdb Nybegynder
02. december 2010 - 23:35 #4
AAAAAaaaah jeg faldt nu over problemet. Ser du, jeg skal hive ordene ud af en tekst-fil og tokenisere dem, men det finder jeg nu ud af er mit problem, da min tokenize-funktion ikke kan tale dansk, eller dvs den omdanner æøå til kode og bryder ord i stykker.
Det kan jeg vel ikke komme uden om uden at lave min egen tokenizer?
Avatar billede arne_v Ekspert
02. december 2010 - 23:42 #5
Kan du ikke lave noget regex til det?
Avatar billede msdb Nybegynder
02. december 2010 - 23:49 #6
Jo, det lyder som en klog fremgangsmetode, men lige hvordan den skal tage form er jeg i tvivl om.
Avatar billede arne_v Ekspert
03. december 2010 - 00:27 #7
Prøv med noget a la dette her:

# coding=ISO-8859-1

import string, re

s = "Dette er en test. Rødgrød med fløde!"
re_split = re.compile('[ .,;!?]+')
words = re_split.split(s)

for word in words:
    print word
Avatar billede arne_v Ekspert
03. december 2010 - 00:28 #8
regex har indbyggede word og non word sets, men jeg vil hellere selv vælge dem
Avatar billede msdb Nybegynder
03. december 2010 - 00:35 #9
Hvordan får jeg så words konverteret det til en liste?
Avatar billede arne_v Ekspert
03. december 2010 - 00:45 #10
wordlist = list(words)
Avatar billede msdb Nybegynder
03. december 2010 - 00:52 #11
Det giver et meget mærkeligt output.
De første 3 ord 'Æble', 'Agurk' og 'Cucumis' bliver spyttet således ud:
['\xc6ble\nAgurk\nCucumis']
Avatar billede arne_v Ekspert
03. december 2010 - 01:52 #12
Så skal du vist have newline med i de tegn som der skal splittes på.
Avatar billede msdb Nybegynder
03. december 2010 - 02:04 #13
Tilgiv min uvidenhed, men jeg er absolut novice indenfor programmering, især regex's. Jeg er med på at /n skal inkluderes, men hvordan vil vil det se ud i parantesen?
Avatar billede arne_v Ekspert
03. december 2010 - 02:18 #14
Prøv:

re_split = re.compile('[ .,;!?\n]+')
Avatar billede msdb Nybegynder
03. december 2010 - 02:20 #15
Ah, smukt. Det løser sammensætningerne, hvordan får jeg den til at skrive 'æble' og ikke '\xc6ble'?
Avatar billede arne_v Ekspert
03. december 2010 - 02:44 #16
Den skulle gerne blive udskrevet korrekt i en fil.

En Windows kommando prompt emulerer DOS og bruger ikke de rigtige Windows tegn sæt.

Dte bliver svært at få dem korrekt.
Avatar billede msdb Nybegynder
03. december 2010 - 02:48 #17
Jeg indser også nu at det er unødvendigt, det vigtige var det svar du gav mig før og for det. Jeg takker mange gange for din hjælp.
Smid et svar :)
Avatar billede msdb Nybegynder
03. december 2010 - 02:49 #18
hov, minus 'og for det'.
Avatar billede arne_v Ekspert
03. december 2010 - 02:58 #19
svar
Avatar billede Halfdan DK Praktikant
28. april 2019 - 15:58 #20
Prøv mit spil :

"""Guess a number within a range.

Exercises

1. Change the range to be from 0 to 1,000,000.
2. Can you still guess the number?
3. Print the number of guesses made.
4. Limit the number of guesses to the minimum required.

"""

from random import randint
from os import system
from os import system, name


system("title " + "Game")

def clear():
 
    # for windows
    if name == 'nt':
        _ = system('cls')
 
    # for mac and linux(here, os.name is 'posix')
    else:
        _ = system('clear')
 

start = 1
end = 100
get = 1
value = randint(start, end)

#print(value)
print("Et tal mellem", start, "and", end)

guess = None

while guess != value:
    text = input("Jeg Tror Det Er: ")
    guess = int(text)

    if guess < value:
        print("Higher.")
        get = get + 1
    elif guess > value:
        get = get + 1
        print("Lower.")
clear()
print("Tillykke! Du fandt tallet som var  :", value)
wait = input("Tryk Enter")
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester