J'ai cherché beaucoup de sujets ici sur la suppression des deux premières lignes d'une chaîne, mais je n'arrive pas à le faire fonctionner avec toutes les solutions que j'ai essayées.
Voici à quoi ressemble ma chaîne:
version 1.00
6992
[-4.32063, -9.1198, -106.59][0.00064, 0.99993, -0.01210][etc...]
Je souhaite supprimer les deux premières lignes de ce fichier de maillage Roblox pour un script que j'utilise. Comment puis je faire ça?
Je ne sais pas quel est votre personnage final, mais qu'en est-il de quelque chose comme
postString = inputString.split("\n",2)[2];
Le personnage final devra peut-être être échappé, mais c'est ce que je commencerais par.
x="""version 1.00
6992
[-4.32063, -9.1198, -106.59][0.00064, 0.99993, -0.01210][etc...]
abc
asdda"""
print "\n".join(x.split("\n")[2:])
Vous pouvez simplement faire ceci.
Supprimez les lignes avec split
:
lines = """version 1.00
6992
[-4.32063, -9.1198, -106.59][0.00064, 0.99993, -0.01210][etc...]"""
lines = lines.split('\n',2)[-1]
Je préfère ne pas scinder les chaînes si la chaîne est grande et conserver les types de nouvelle ligne ultérieurement.
Supprimer les n premières lignes:
def find_nth(haystack, needle, n):
start = haystack.find(needle)
while start >= 0 and n > 1:
start = haystack.find(needle, start+len(needle))
n -= 1
return start
assert s[find_nth(s, '\n', 2) + 1:] == 'c\nd\n'
Voir aussi: Trouver la nième occurrence d'une sous-chaîne dans une chaîne
Ou pour n'en supprimer qu'un:
s = 'a\nb\nc\nd\n'
assert s[s.find('\n') + 1:] == 'b\nc\nd\n'
Testé sur Python 3.6.6.
Vous pouvez utiliser certaines règles, telles que considérer ces lignes uniquement si elles commencent par '['
caractère lines = [line for line in lines if line.startswith('[')]