[英]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.