[英]Amend value at the end of a line on a text file - python
34512340 plain brackets 0.50 30
56756777 100mm bolts 0.20 0
90673412 L-shaped brackets 1.20 30
我有这个文本文件,我想在每行的末尾取值,对它做一些事情,然后在不改变文本格式的情况下将其写回。 所以基本上只需修改每一行的最后一个值。
我目前的方法是使用间距/制表符将行分成一个值列表,但我不知道如何将空格/制表符放回原处。
有什么建议么?
这也是我的模拟代码..
import re
import fileinput
with open('stock.txt', 'r') as stock:
stockList = stock.readlines()
print(stockList[0])
print(re.split(r'\t+', stockList[0].rstrip('\t').rstrip('\n')))
with fileinput.FileInput('test.txt', inplace=True) as file:
for line in file:
print(line.replace(stockList[0], ammendedLineWithEditedValue), end='')
您可以使用正则表达式匹配1 +标签,然后使用1+位数
r'(\t+)([0-9]+)$
这是一个正则表达式演示 。
查看一个Python演示 - 为了演示目的 - 只需在正则表达式中找到的值增加30
:
import re
def ammendedLineWithEditedValue(s): # TEST
return int(s) + 30
lines = '''34512340 plain brackets 0.50 30
56756777 100mm bolts 0.20 0
90673412 L-shaped brackets 1.20 30'''
for line in lines.split("\n"):
print(re.sub(r'(\t+)([0-9]+)$', lambda m: "{}{}".format(m.group(1), ammendedLineWithEditedValue(m.group(2))), line))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.