У меня есть файл .txt из 3 миллионов строк. Файл содержит данные, которые выглядят так:
# RSYNC: 0 1 1 0 512 0
#$SOA 5m localhost. hostmaster.localhost. 1906022338 1h 10m 5d 1s
# random_number_ofspaces_before_this text $TTL 60s
#more random information
:127.0.1.2:https://www.spamhaus.org/query/domain/$
test
:127.0.1.2:https://www.spamhaus.org/query/domain/$
.0-0m5tk.com
.0-1-hub.com
.zzzy1129.cn
:127.0.1.4:https://www.spamhaus.org/query/domain/$
.0-il.ml
.005verf-desj.com
.01accesfunds.com
Я пытаюсь разобрать его так, чтобы он выглядел так:
+--------------------+--------------+-------------+-----------------------------------------------------+
| domain_name | period_count | parsed_code | raw_code |
+--------------------+--------------+-------------+-----------------------------------------------------+
| test | 0 | 127.0.1.2 | :127.0.1.2:https://www.spamhaus.org/query/domain/$ |
| .0-0m5tk.com | 2 | 127.0.1.2 | :127.0.1.2:https://www.spamhaus.org/query/domain/$ |
| .0-1-hub.com | 2 | 127.0.1.2 | :127.0.1.2:https://www.spamhaus.org/query/domain/$ |
| .zzzy1129.cn | 2 | 127.0.1.2 | :127.0.1.2:https://www.spamhaus.org/query/domain/$ |
| .0-il.ml | 2 | 127.0.1.4 | :127.0.1.4:https://www.spamhaus.org/query/domain/$ |
| .005verf-desj.com | 2 | 127.0.1.4 | :127.0.1.4:https://www.spamhaus.org/query/domain/$ |
| .01accesfunds.com | 2 | 127.0.1.4 | :127.0.1.4:https://www.spamhaus.org/query/domain/$ |
+--------------------+--------------+-------------+-----------------------------------------------------+
С этой целью я придумал следующее:
rows = []
raw_code = None
parsed_code = None
with open('dbl-sr-2019-06-02T23_38_27Z.txt', 'r') as f: # assumes the file name is input.txt
for line in f:
line = line.rstrip('\n')
if line.startswith(':127'):
raw_code = line
parsed_code = re.split(":", line)[1]
continue
if line.startswith('#'):
continue
rows.append((line, parsed_code))
# rows.append((raw_code))
# rows.extend((line, parsed_code, raw_code))
# rows.extend((raw_code))
import pandas as pd
df = pd.DataFrame(rows, columns=['domain_name', "parsed_code" 'raw_spamhaus_return_code'])
print(df)
Закомментированные строки в фрагменте кода выше либо не выдавали желаемого результата, либо выдавали ошибку. Я изо всех сил пытаюсь построить Pandas DataFrame с более чем 2 столбцами. Я могу получить domain_name
и еще один столбец. Кажется, я не могу получить код для правильного использования функций .append
и .extend
. Может кто-нибудь, пожалуйста, дать руководство?