У меня есть код ниже, который я использую для анализа моих данных из текстового файла, который содержит несколько полей и имена сотен столбцов, где я выбираю обязательные поля во время обработки панд через read_csv, который работает нормально , он работает только с encoding = 'cp1252'.
Есть пять ключевых полей, которые я ищу как ['Hostname', 'IP Address', 'Aux Site', 'OS Version', 'Network Name']
,
В разделе шаблона, в котором я использую переменную patt
, я ищу ключевые слова / строки как "AIX|CentOS|RHEL|SunOS|SuSE|Ubuntu|Fedora|\?"
, который, как я полагаю, не заботится о чувствительности к регистру.
что соответствует столбцу OS Version
, но я использую литральную метку ?
, чтобы соответствовать ?
, который работает, но в то же время он также получает Windows 10 ???
, который мне нужен только ?
, если его там в OS Version
поле.
Во-вторых , при преобразовании df2.to_csv
столбцы не разделяются, а переходят в столбец, который позже я делю вручную, как мы можем гарантировать, что каждое поле правильно обрабатывается как файл CSV.
#!/python/v3.6.1/bin/python3
import pandas as pd
##### Python pandas, widen output display to see more columns. ####
pd.set_option('display.height', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
pd.set_option('expand_frame_repr', True)
##################### END OF THE Display Settings ###################
patt = "AIX|CentOS|RHEL|SunOS|SuSE|Ubuntu|Fedora|\?"
col_names = ['Hostname', 'IP Address', 'Aux Site', 'CPU Model', 'CDN Version', 'OS Version', 'Kernel Version', 'LDAP Profile', 'Network Name']
df1 = pd.read_csv('/home/karn/plura/Test/Python_Panda/host.txt', delimiter = "\t", usecols=col_names, encoding='cp1252', dtype='unicode')
df2 = df1[df1['OS Version'].str.contains(patt, na=False)][['Hostname', 'IP Address', 'Aux Site', 'OS Version', 'Network Name']]
df2['Hostname'] = df2['Hostname'].str.replace("*", "")
df2.to_csv("HostList_from_Surveys.csv", sep='\t', encoding='utf-8', index=False)
Ниже приведен пример данных. Изображение для просмотра:

Ниже опять те же данные в текстовом формате для воспроизведения.
Hostname IP Address Aux Site OS Version Network Name
host01 192.168.1.1 yoko RHEL 5.5 CISCO
host02 192.168.1.2 chelmsford AIX 6.1
host03 192.168.1.3 sanjose RHEL 5.5
host04 192.168.1.4 rosh CentOS 6.8 CISCO
host05 192.168.1.5 noida3 CentOS 5.10 CISCO
host06 192.168.1.6 rosh RHEL 6.5 CISCO
host07 192.168.1.7 noida3 RHEL 6.5 CISCO
host08 192.168.1.8 san jose RHEL 6.5 CISCO
host09 192.168.1.9 noida3 RHEL 5.5
host10 192.168.1.10 sophia RHEL 5.5 AVAYA
host11 192.168.1.11 sanjose RHEL 5.5 AVAYA
host12 192.168.1.12 sanjose RHEL 5.3 AVAYA
host13 192.168.1.13 sanjose RHEL 5.8 AVAYA
host14 192.168.1.14 sanjose Ubuntu 14.04.1
любая помощь будет высоко ценится.