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

How do I delete 4 characters from the end of certain lines in a string?

我有一个 .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])

这似乎并没有改变变量 data 中的任何内容。我需要将输出作为可以保存到文件的字符串,但我似乎无法让它工作。我该如何解决这个问题?

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

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

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()

请注意,这里我们正在使用新的 line 值(在调用 rstrip 之后)。