簡體   English   中英

在 python 正則表達式中的模式后放置逗號

[英]Put comma after a pattern in python regex

就像問題說我試圖在模式或子字符串的末尾添加一個逗號。 我找到了 3 個可以完成這項工作的解決方案,而且看起來也很合乎邏輯。 但他們並沒有改變任何東西。 我將向您展示所有這些代碼。 目標是找出我是否遺漏了一些東西,或者我可以添加一些東西來使它工作。

順便說一句,在谷歌上,大多數這些與逗號相關的問題都是關於在第 100 位的數字字符串中添加逗號,然后是第 5 位等,像這樣 - 1,00,000。 那不是我要找的。

所以這里有一些我試過的代碼:

import re
f = open('pizza.txt', 'r')
content = f.read()



for x in content:
  regex = r"\\d{2}/\\d{2}/\\d{4}"
  rep_str = regex+","
  sentence += re.sub(regex, rep_str, x)
   
print(sentence)


content="42/20/2021 every day is a good day 30.25

13/14/2015 today is saturday 24."

在這里,我嘗試從文本文件中逐行讀取它。 底部的內容變量顯示了文本文件中的內容。 這些只是測試字符串。 每個字符串都有一個日期模式,然后是一些與數字混合的文本,然后是一個浮點數。

理想情況下,我想在日期之后放一個逗號,在文本和數字混合之后再放一個逗號,就在浮點數之前。

為了簡單起見,我首先在日期后添加第一個逗號。

變量正則表達式具有日期模式。 變量 rep_str 包含我想要替換的模式,即模式后跟逗號。 然后 re.sub 完成這項工作。 output 是文本文件中的字符串,沒有變化。 沒有逗號什么都沒有。

下一個代碼:

content = "13/14/2015 today 001 is saturday 24.34"
m = re.sub(r'(\\d{2}/\\d{2}/\\d{4})(.*)', r'\1 ,\2 ', content)
   
print(m)

更簡單,沒有文本文件,只有 1 個字符串。 該代碼有 2 種模式。 一個用於約會,另一個用於其他一切。 試圖在它們之間添加逗號。 結果相同。 沒有逗號,沒有錯誤,只是與 output 相同的字符串。

第三次嘗試:

content = "13/14/2015 today 001 is saturday 24.34"
result = re.sub('/(?<=\d\b)(?!,)/', ',', content); 
print(result)

這段代碼是從這里收集的。 代碼的第一部分查找以帶有單詞邊界的數字結尾的字母數字。 下一個大括號確認已經沒有逗號。 然后放置逗號。 這段代碼顯然解決了我遇到的類似問題。 所以我試了一下。 令人驚訝的是,結果是一樣的。 沒有錯誤,沒有變化,與 output 相同的字符串。

如果您發現任何東西或可以想到一個有效的代碼,請提供建議。

你需要使用

import re

with open('pizza.txt', 'r') as f:
    for line in f:
        print(re.sub(r'\d{2}/\d{2}/\d{4}', r'\g<0>,', line))

請參閱 Python 演示:

import re

content="""42/20/2021 every day is a good day 30.25
13/14/2015 today is saturday 24."""

for line in content.splitlines(False):
    print(re.sub(r'\d{2}/\d{2}/\d{4}', r'\g<0>,', line))

Output:

42/20/2021, every day is a good day 30.25
13/14/2015, today is saturday 24.

詳情

  • with open('pizza.txt', 'r') as f: - 打開pizza.txt文件以供閱讀
  • for line in f: - 逐行讀取f文件
  • print(re.sub(r'\d{2}/\d{2}/\d{4}', r'\g<0>,', line)) - 打印正則表達式替換的結果: r'\d{2}/\d{2}/\d{4}' (注意原始字符串文字中的單個反斜杠)查找所有出現的兩位數, / ,兩位數, /和四位數字,並替換為相同的找到值( \g<0>反向引用指的是整個匹配值)並在后面附加一個逗號。 `

暫無
暫無

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

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