如何处理test.txt中特定前缀S{n}的数字,添加对应后缀并替换分隔符?
几种快速实现文本格式转换的方案
我来给你几个实用的解决方案,不管你偏好脚本还是命令行工具,都能轻松完成这个格式转换需求:
方法1:Python脚本(跨平台通用)
这个方案逻辑清晰,容易理解和修改,适合所有操作系统。你可以创建一个convert.py脚本,内容如下:
# 读取原文件内容 with open('test.txt', 'r', encoding='utf-8') as f: content = f.read().strip() # 按空格分割每个S{n}项 items = content.split() result = [] for item in items: # 分割S标识和数字部分,比如S1:158,525 → ['S1', '158,525'] s_part, nums_part = item.split(':') # 提取n,比如S1 → '1',S10 → '10' n = s_part[1:] # 分割数字列表,给每个数字添加c{n},再用分号连接 processed_nums = ';'.join([f"{num}c{n}" for num in nums_part.split(',')]) # 拼接回S{n}:xxx的格式 result.append(f"{s_part}:{processed_nums}") # 把结果拼接成一行,写入新文件或者打印输出 final_content = ' '.join(result) with open('converted_test.txt', 'w', encoding='utf-8') as f: f.write(final_content) print(final_content)
运行后会生成一个converted_test.txt文件,里面就是你要的格式。
方法2:sed命令(Linux/macOS终端)
如果你用的是类Unix系统,一行sed命令就能完成转换,不需要写脚本:
sed -E 's/(S([0-9]+)):([0-9]+)/\1:\3c\2/g; s/,/;/g' test.txt > converted_test.txt
命令解释:
- 第一个替换规则
s/(S([0-9]+)):([0-9]+)/\1:\3c\2/g:匹配每个S{n}:数字的部分,把数字替换成数字c{n}; - 第二个替换规则
s/,/;/g:把所有逗号替换成分号; - 最后把结果输出到
converted_test.txt文件。
方法3:PowerShell命令(Windows)
Windows用户可以用PowerShell来处理,打开PowerShell后执行以下命令:
$content = Get-Content -Path 'test.txt' -Raw $items = $content -split ' ' $result = @() foreach ($item in $items) { $sPart, $numsPart = $item -split ':' $n = $sPart.Substring(1) $processedNums = ($numsPart -split ',' | ForEach-Object { "$_c$n" }) -join ';' $result += "$sPart:$processedNums" } $result -join ' ' | Out-File -Path 'converted_test.txt' -Encoding utf8
执行后同样会生成转换后的文件。
你可以根据自己的操作系统和使用习惯选择对应的方法,测试下来都能完美实现你要的格式转换~
内容的提问来源于stack exchange,提问作者Amz
相关产品推荐
相关产品推荐

