web-dev-qa-db-fra.com

Python - Suppression des 2 premières lignes d'une chaîne

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?

12
GShocked

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.

20
dstudeba
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.

6
vks

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]
2
Daniel

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('[')]

1
Bharadwaj