Python 2.7 omvandla till stor bokstav efer punkt.

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
sm7tix
Inlägg: 283
Blev medlem: 19 september 2013, 10:47:03
Ort: Kristianstad

Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av sm7tix »

Jag försöker få till en funktion som gör första bokstaven efter en punkt till versal. Hittade följande kod som ser ut att göra det men det funkar inte på svenska tecken. Hur löser jag det? Denna funktion fixar även ? ! vilket är bra om det går att få igång den.

Kod: Markera allt

#!/usr/bin/python
# -*- coding: utf-8 -*-

import re

p = re.compile(r'((?<=[\.\?!]\s)(\w+)|(^\w+))')

def cap(match):
    return(match.group().capitalize())

text = p.sub(cap, 'test av textfunktion. ny mening. ännu en! och mer.')
print text


resultatet
Test av textfunktion. Ny mening. ännu en. Och mer!
Tack på förhand
Stefan
guckrum
Inlägg: 1669
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av guckrum »

Python3 använder unicode som default:

Kod: Markera allt

>>> str.capitalize('ännu en')
'Ännu en'
sm7tix
Inlägg: 283
Blev medlem: 19 september 2013, 10:47:03
Ort: Kristianstad

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av sm7tix »

Mm kan så vara men jag har kodat i mer än tre år i python 2.7 och att konvertera allt det... Vet inte om det är möjligt.
guckrum
Inlägg: 1669
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av guckrum »

Prova byt typ till unicode.
sm7tix
Inlägg: 283
Blev medlem: 19 september 2013, 10:47:03
Ort: Kristianstad

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av sm7tix »

Ok. Som det brukar sägas "det finns inga dumma frågor..."
Hur? Jag är inte superbra på python i alla dess delar.

Kod: Markera allt

text = unicode(text)
print text
ger samma resultat.
XorXaX
Inlägg: 409
Blev medlem: 27 maj 2004, 09:44:16

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av XorXaX »

Det finns verktyg för att konvertera till Python 3;
https://docs.python.org/2/library/2to3.html

.
sm7tix
Inlägg: 283
Blev medlem: 19 september 2013, 10:47:03
Ort: Kristianstad

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av sm7tix »

Har ni någon erfarenhet från att konvertera från python 2.7 till 3? Jag har en massa script och en flask app snurrande.
guckrum
Inlägg: 1669
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av guckrum »

Såhär?

Kod: Markera allt

>>> print('ännu en'.capitalize())
ännu en
>>> print(unicode('ännu en', encoding='utf-8').capitalize())
Ännu en
sm7tix
Inlägg: 283
Blev medlem: 19 september 2013, 10:47:03
Ort: Kristianstad

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av sm7tix »

Tack!
Den funkar. Hann göra en workaround som körde ett python3 script :D
Nu ska jag fixa det i min 2.7 också.
Stefan
sm7tix
Inlägg: 283
Blev medlem: 19 september 2013, 10:47:03
Ort: Kristianstad

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av sm7tix »

Funkar dock inte i mitt script med regex osv.
Får tänka tills i morgon. Sömn brukar lösa en del eller så vaknar jag upp i natt och har löst det :)
guckrum
Inlägg: 1669
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av guckrum »

Har ni någon erfarenhet från att konvertera från python 2.7 till 3? Jag har en massa script och en flask app snurrande.
Jadå, det är lätt att underskatta hur mycket arbete det faktiskt är. Ett bra utgångsläge är att se till att kunna testa Allt.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av Micke_s »

En lösning kan vara köra '.'join([x.capitalize() for x in str.split(".")])
sm7tix
Inlägg: 283
Blev medlem: 19 september 2013, 10:47:03
Ort: Kristianstad

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Inlägg av sm7tix »

Micke_s skrev:En lösning kan vara köra '.'join([x.capitalize() for x in str.split(".")])
Testar. Just nu fungerar min workaround med att köra en subprocess med python 3.

.
Skriv svar