如何从字符串中某些行的末尾删除 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
之后)。
我有一个 .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
之后)。