Specifi c разделение строки - PullRequest
0 голосов
/ 24 января 2020

У меня есть эта строка:

youtube.com.    3599    IN  TXT "google-site-verification=OQz60vR-YapmaVrafWCALpPyA8eKJKssRhfIrzM-DJI"
youtube.com.    3599    IN  TXT "v=spf1 include:google.com mx -all"
youtube.com.    3599    IN  TXT "facebook-domain-verification=64jdes7le4h7e7lfpi22rijygx58j1"

И я хочу эту расщепленную версию как список из нее:

[youtube.com.,3599,IN,TXT,"google-site-verification=OQz60vR-YapmaVrafWCALpPyA8eKJKssRhfIrzM-DJI",youtube.com.,3599,IN,TXT,"v=spf1 include:google.com mx -all",youtube.com.,3599,IN,TXT,"facebook-domain-verification=64jdes7le4h7e7lfpi22rijygx58j1"]

С функцией split () для разделения строки на каждую отдельную строку пустым пространством, но я хочу разбить каждую строку на 5 строк, разделенных первыми 4 пробелами в строке. Как это возможно? (Желательно с небольшим количеством кода)

Заранее спасибо, привет

Ответы [ 2 ]

1 голос
/ 24 января 2020

Вы можете определить максимальное количество разбиений с помощью maxsplit

my_string.split(maxsplit=4)

Если задано maxsplit, то самое большее число разделений maxsplit происходит, а остаток от строка возвращается как последний элемент списка (таким образом, список будет иметь максимум maxsplit + 1 элемент)

0 голосов
/ 24 января 2020

Чтобы разбить строку и оставить пробелы внутри кавычек, вы можете использовать shlex.split():

import shlex
import itertools

s = '''youtube.com.    3599    IN  TXT "google-site-verification=OQz60vR-YapmaVrafWCALpPyA8eKJKssRhfIrzM-DJI"
youtube.com.    3599    IN  TXT "v=spf1 include:google.com mx -all"
youtube.com.    3599    IN  TXT "facebook-domain-verification=64jdes7le4h7e7lfpi22rijygx58j1"'''

out = list(itertools.chain.from_iterable(shlex.split(line, posix=False) for line in s.splitlines()))

print(out)

Печать:

['youtube.com.', '3599', 'IN', 'TXT', '"google-site-verification=OQz60vR-YapmaVrafWCALpPyA8eKJKssRhfIrzM-DJI"', 'youtube.com.', '3599', 'IN', 'TXT', '"v=spf1 include:google.com mx -all"', 'youtube.com.', '3599', 'IN', 'TXT', '"facebook-domain-verification=64jdes7le4h7e7lfpi22rijygx58j1"']
...