Python 如何从字符串中某些行的末尾删除4个字符?

Python 如何从字符串中某些行的末尾删除4个字符?,python,string,replace,.obj,Python,String,Replace,.obj,我有一个.obj文件,它是一个用于3D图形的文本文件,下面是一个示例: f 17439/17439 17440/17440 17441/17441 g lCollar_306 f 17442/17442 17443/17443 17444/17444 f 17445/17445 17446/17446 17447/17447 f 17448/17448 17449/17449 17450/17450 f 17451/17451 17452/17452 17453/17453 f 17454/17

我有一个
.obj
文件,它是一个用于3D图形的文本文件,下面是一个示例:

f 17439/17439 17440/17440 17441/17441
g lCollar_306
f 17442/17442 17443/17443 17444/17444
f 17445/17445 17446/17446 17447/17447
f 17448/17448 17449/17449 17450/17450
f 17451/17451 17452/17452 17453/17453
f 17454/17454 17455/17455 17456/17456
f 17457/17457 17458/17458 17459/17459
g lShldr_308
f 17460/17460 17461/17461 17462/17462
f 17463/17463 17464/17464 17465/17465
g lCollar_306
我想浏览一下文件,找到以字母
'g'
开头的每一行,然后从每一行中删除最后四个字符(删除下划线和3位数字)

我尝试了以下方法:

for line in data.split('\n'):
    if (line.startswith('g')):
        line = line.rstrip(line[-4])

这似乎不会改变变量
数据中的任何内容。我需要将输出作为一个字符串保存到一个文件中,但我似乎无法让它工作。如何解决此问题?

您正在将缓冲区拆分为多行,并对其进行迭代,将每一行分配给变量
line
。然后生成一个新字符串(
rstrip
),并将其分配回变量
。但这不会改变原始缓冲区。你只是在旁边生成一个新字符串,然后丢弃它

您可能要做的是将这些行写入一个新文件,如下所示:

f = open("output.obj", "w")
for line in data.split('\n'):
    if line.startswith('g'):
        line = line.rstrip(line[-4])
    print(line, file=f, end='\n')
f.close()

请注意,这里我们使用新的
值(在调用
rstrip
之后)执行一些操作。

输出文件,但它没有从行中删除任何字符。输出与输入没有变化,我知道了。我没有使用rstrip,而是执行了以下操作:
line=line[:-4]