Я пытаюсь разобрать строку, используя re.split в python. Вот пример строки Я пытаюсь работать на:Python Regex лучший разделитель для использования?
drwxr-xr-x 2 user1 user1 4096 Sep 4 14:23 FolderName
drwxr-xr-x 2 user1 user1 4096 Sep 4 14:23 FolderName_1
drwxr-xr-x 2 user1 user1 4096 Sep 4 14:23 FolderName 1
Я использую следующий код, чтобы разделить каждую строку в массив, а просто использовать последний элемент.
file_folder_names_parsed.insert(file_index, (re.split(r"\s", entry)))
print file_folder_names_parsed[file_index]
#The file/folder name is stored in the last element, lets index to that
num_elements_in_parsed_string = len(file_folder_names_parsed[file_index])
parsed_folder_names.insert(file_index, file_folder_names_parsed[file_index][num_elements_in_parsed_string-1])
Теперь проблема в том, что в течение первых двух строк, он отлично работает, и я могу заполнить список с записями: [FOLDERNAME, FolderName_1]
Но для последнего элемента, вместо получая [FolderName 1], я получаю только [1]. Это имеет смысл, поскольку между ними есть пробельный символ, который я использую в качестве разделителя. К сожалению, я не могу использовать \ t (tab) как разделитель регулярных выражений для строки, с которой мне приходится иметь дело.
Может ли кто-нибудь предложить для последнего случая, как я могу получить [FolderName 1] вместо того, чтобы просто получить [1], который я сейчас получаю?
Вы можете написать шаблон, который будет соответствовать каждой части строки отдельно, а не пытаться «разбить» и индексировать. – jonrsharpe
[Не разбирайте 'ls' output] (http://mywiki.wooledge.org/ParsingLs) в первую очередь. – tripleee
* Рядом *: В вашем коде выше выражение 'file_folder_names_parsed [file_index] [num_elements_in_parsed_string-1]' равнозначно 'file_folder_names_parsed [file_index] [- 1]'. В общем, всякий раз, когда вы хотите получить конечный элемент списка, используйте 'xxx [-1]', а не 'xxx [len (xxx) -1]'. –