Sida 1 av 1

Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 29 juni 2018, 19:13:19
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

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 29 juni 2018, 19:33:06
av guckrum
Python3 använder unicode som default:

Kod: Markera allt

>>> str.capitalize('ännu en')
'Ännu en'

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 29 juni 2018, 19:37:48
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.

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 29 juni 2018, 19:41:12
av guckrum
Prova byt typ till unicode.

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 29 juni 2018, 19:49:27
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.

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 29 juni 2018, 20:21:53
av XorXaX
Det finns verktyg för att konvertera till Python 3;
https://docs.python.org/2/library/2to3.html

.

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 29 juni 2018, 22:09:02
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.

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 29 juni 2018, 22:47:30
av guckrum
Såhär?

Kod: Markera allt

>>> print('ännu en'.capitalize())
ännu en
>>> print(unicode('ännu en', encoding='utf-8').capitalize())
Ännu en

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 29 juni 2018, 22:56:56
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

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 29 juni 2018, 23:09:57
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 :)

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 30 juni 2018, 17:50:04
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.

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 30 juni 2018, 19:21:06
av Micke_s
En lösning kan vara köra '.'join([x.capitalize() for x in str.split(".")])

Re: Python 2.7 omvandla till stor bokstav efer punkt.

Postat: 30 juni 2018, 19:27:00
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.

.