我得到了含這種方式分開行的文本文件:排序子在列表 - Python的
Action: Add Parameter
Matched Parameter: ctl00_ContentPlaceHolderMain_RadSearchBoxNeId_ClientState
on [HTTPS] /ConsolePage/ConsolePageWeb.aspx Matched Wildcard: *
Action: Add Parameter
Matched Parameter: ctl00$ContentPlaceHolderMain$HiddenFieldSelectedFilter on
[HTTPS] /ConsolePage/ConsolePageWeb.aspx Matched Wildcard: *
我寫了一個小腳本Python中只得到了「匹配Paramater後的字符串: 「並將其輸出到文件中,但結果未正確排序。
腳本:
import re
pattern = "^Matched Parameter: ([^\s]+)"
new_file = []
with open(".\params.txt") as txtFile:
lines = txtFile.readlines()
for line in lines:
match = re.search(pattern, line)
if match:
new_line = match.group()
new_line = new_line.split(" ")
del new_line[0], new_line[0]
new_line = sorted(new_line)
print(new_line)
輸出:
['ctl00_MainSplitter_ClientState']
['ctl00_RadWindowLicenseAggreemennt_C_RadButtonLicenseAggreemenntCancel_ClientState']
['ctl00_RadWindowLicenseAggreemennt_C_RadButtonLicenseAggreemenntOK_ClientState']
['ctl00_RadWindowLicenseAggreemennt_ClientState']
['ctl00$ScriptManagerMain']
['ctl00_RadStyleSheetManager1_TSSM']
['ctl00_ScriptManagerMain_TSM']
['__VIEWSTATE']
['ctl00_radwindow1_ClientState']
['ctl00_RadButtonLgout_ClientState']
['ctl00_TopPane_ClientState']
['ctl00_RadPanelBarMainMenu_ClientState']
['ctl00_LeftPane_ClientState']
['ctl00_ContentPlaceHolderMain_RadWindowManager1_ClientState']
['ctl00$ContentPlaceHolderMain$RadComboBoxTimeResolution']
['ctl00_ContentPlaceHolderMain_RadComboBoxTimeResolution_ClientState']
['ctl00_ContentPlaceHolderMain_RadSearchBoxNeId']
['ctl00_ContentPlaceHolderMain_RadSearchBoxNeId_ClientState']
['ctl00$ContentPlaceHolderMain$HiddenFieldSelectedFilter']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadButtonAlarmsFilterClose_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadListBoxRuleNames_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadListBoxSeverity_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadListBoxStatus_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadListBoxEntityType_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadButtonAlarmsFilterOK_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowFiltersList_C_RadButtonFiltersListClose_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowFiltersList_C_RadListBoxExistingFilters_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowFiltersList_C_RadButtonFiltersListOk_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowFiltersList_C_RadButtonFiltersListEdit_ClientState']
我需要的輸出通過它進行排序是按字母順序排列的參數名字符串,例如 'AlarmsUserFilters' 前 'ClientState':
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadButtonAlarmsFilterClose_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadListBoxRuleNames_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadListBoxSeverity_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadListBoxStatus_ClientState']
['ctl00_ContentPlaceHolderMain_AlarmsUserFilters_RadWindowAlarmsFilter_C_RadListBoxEntityType_ClientState']
['ctl00_MainSplitter_ClientState']
任何幫助如何以最好的方式做到這一點?,我需要是通用的儘可能地,也就是說可能有不同的字符串需要按這種方式排序('ct100'等等。僅僅是一個例子)
謝謝!
它似乎是拋出一個'NameError' ..如果後面的行被縮進? –
你沒有排序任何東西。你的'for'循環遍歷你的數據,並按照輸入文件中的順序輸出結果;您傳遞給'sorted'的'new_line'總是一個單元素列表。 –
我需要一個通用的答案,用'_'分割對於這個用例來說很好,但是將來我會看到不同的字符串。我需要一些按照一般方法對子字符串進行排序 –