gpt4 book ai didi

python - 如何在 Python 中使用正则表达式和 re.sub 查找所有出现的 unicode 字符的大写和小写字母?

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:44 26 4
gpt4 key购买 nike

这是我在 django View 中的代码(有意简化)(Python 2.7):

# -*- coding: utf-8 -*-
from django.shortcuts import render
import re

def index(request):
found_verses = []
pattern = re.compile('ю')

with open('d.txt', 'r') as doc:
for line in doc:

found = pattern.search(line)

if found:
modified_line = pattern.sub('!'+'\g<0>'+'!',line)
found_verses.append(modified_line)

context = {'found_verses': found_verses}
return render(request, 'myapp/index.html', context)

d.txt(也是 utf-8)包含这一行(有意简化):

1. Я сказал Юлию одному.

上面的内容在呈现时给了我预期的结果:

1. Я сказал Юли!ю! одному.

当我改成大写字母pattern = re.compile('Ю')时,它也给了我预期的结果:

1. Я сказал !Ю!лию одному.

但是当我更改为一组 pattern = re.compile('[юЮ]')pattern = re.compile('[Юю]')pattern = re.compile('[ю]')pattern = re.compile('[Ю]'),它什么也没给我。我想要得到的是:

1. Я сказал !Ю!ли!ю! одному.

请帮我得到这个结果。我已经苦苦挣扎了一天多,并尝试了不同的配置,例如 pattern = re.compile('[юЮ]', re.UNICODE)pattern = re.compile('ю ', re.UNICODE|re.I)this和无数其他人,但都是徒劳的。

最佳答案

Use unicodes.

with io.open('d.txt', 'r', encoding='utf-8') as doc:
...

...

pattern = re.compile(u'[юЮ]', re.UNICODE)

关于python - 如何在 Python 中使用正则表达式和 re.sub 查找所有出现的 unicode 字符的大写和小写字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22899368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com