我在文件中有以下文字
$periods = orders::onlyTrashed()
->get()
->groupBy(function($date) {
return \Carbon\Carbon::parse($date->created_at)->format('Y');
})
->map(function ($item) {
return $item
->sortByDesc('created_at')
->groupBy(function($item) {
return \Carbon\Carbon::parse($item->created_at)->format('F');
});
});
return view("order.archieve", compact("periods"));
我需要提取第一行的最后一个字母并增加一个版本并附加到同一文件中。我的附加部分将是
firefox-x 46.0:
google 5.1.0.1:
- request
- branch
能够提取最后一个整数,但如何更新和写入同一文件。
firefox-x 46.1:
google 5.1.0.1:
- request
- branch
答案 0 :(得分:1)
您可以使用
import re
rx = r'\d+(?=:$)'
s="""firefox-x 46.0:
google 5.1.0.1:
- request
- branch"""
print(re.sub(rx, lambda x: str(int(x.group(0)) + 1), s, 1, re.M))
输出:
firefox-x 46.1:
google 5.1.0.1:
- request
- branch
请参见Python demo
带有\d+(?=:$)
标志的re.M
正则表达式将匹配1个以上的数字,并在行的末尾加上:
和1
作为 count 参数传递给re.sub
的操作将仅执行一次替换。
lambda x: str(int(x.group(0)) + 1)
部分将进行第一个匹配,将匹配的1+个数字转换为整数,将1
添加到值并将其转换回字符串。
要读取和写入另一个文件:
import re
rx = r'\d+(?=:$)'
with open('branch.txt', 'r') as fr:
data = fr.read()
with open('branch.out.txt', 'w') as fw:
fw.write(re.sub(rx , lambda x: str(int(x.group(0)) + 1), data, 1, re.M))