正则表达式定位数字,后跟空格,后跟字符

2024-06-08 17:36:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着只找到后面跟空格的数字和后面的字符

Exemple : text = "3 R"

希望它是这样的:

Exemple : text = "3. R"

我尝试过以下代码:

text= re.sub(r'([0-9])(?!.*\d)', r'\1. ', text)

我越来越近了,但不知道我应该添加什么

更新

正文:

Évitez les conversations malsaines en utilisant les 3 R, à savoir 
‘reformuler, recentrer et réorienter’. Créez un cadre confortable en 
reformulant les phrases susceptibles de générer des émotions négatives. Vous 
pouvez également reformuler des reproches tels que : « Cela m’ennuie que tu 
passes autant de temps sur des projets de moindre importance qui ne mènent 
nulle part » en disant plutôt « J’aimerais que tu consacres les efforts que 
tu fournis dans ton travail à davantage de nouveaux projets plutôt qu’à 
quelques projets peu importants... Je suis sûr que tu disposes maintenant de 
suffisamment d’expérience pour gérer des projets inédits et ambitieux. »

我的正则表达式代码:

    text= re.sub(r'\s*(?!\.[’"])([.,?:])(?!(?<=\d.)\d)\s*', r'\1 ', text)
    text= re.sub(r'\s*([-])\s*', r'\1', text)
    text= re.sub(u"\u2013", " ", text)
    text= re.sub(r'(\d)\s+(?=\d)', r'\1', text)
    text= re.sub(r'(\d)\/+(?=\d)', r'\1 ', text)
    text= re.sub(r'([0-9])\b(?!.*\d)',r'\1. ', text)

输出:

Évitez les conversations malsaines en utilisant les 3 R, à savoir 
‘reformuler, recentrer et réorienter’. Créez un cadre confortable en 
reformulant les phrases susceptibles de générer des émotions négatives. Vous 
pouvez également reformuler des 
reproches tels que:  Cela m’ennuie que tu passes autant de temps sur des 
projets de moindre importance qui ne mènent nulle part  en disant plutôt  
J’aimerais que tu consacres les efforts que tu fournis dans ton travail à 
davantage de nouveaux projets plutôt qu’à quelques projets peu importants, Je 
suis sûr que tu disposes maintenant de suffisamment d’expérience pour gérer 
des projets inédits et ambitieux.

我试过你们建议的代码,但没有用idk为什么,文本是一个长字符串

问题可能是因为使用了太多的正则表达式

我用的是python3.9

片段

enter image description here

enter image description here


Tags: 代码textredeetenqueles
2条回答

这对我很有用:

re.sub('(\d)\s([a-zA-Z])', r'\1. \2', text)

它将3 R替换为3. R。也适用于较大的数字,如31789 R和小写3 r

根据您定义的约束(输入/输出)和我们的讨论,您可以使用以下代码段:

re.sub(r"(\d+)(?:\s+)(\w)", r"\1. \2", text)

相关问题 更多 >