簡體   English   中英

正則表達式定位數字后跟空格后跟字符

[英]Regex locate number followed by space followed by character

我試圖只找到數字后跟空格和一個字符。

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

片段

在此處輸入圖片說明

在此處輸入圖片說明

根據您定義的約束(輸入/輸出)和我們的討論,您可以使用以下代碼段:

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

這對我有用:

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

它將3 R替換為3. R 也適用於更大的數字,如31789 R和小寫3 r

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM