Чтобы найти индекс строки и индекс слова, читая текстовый файл
Я только начал изучать Tcl, может кто-нибудь помочь мне, как найти индекс строки и индекс слова для конкретного слова, читая текстовый файл, используя Tcl.
Спасибо
1 ответ
Как уже упоминалось в комментариях, есть много основных команд, которые вы можете использовать для решения вашей проблемы. Чтобы прочитать файл в список строк, вы можете использовать open
, split
, read
а также close
команды следующим образом:
set file_name "x.txt"
# Open a file in a read mode
set handle [open $file_name r]
# Create a list of lines
set lines [split [read $handle] "\n"]
close $handle
Найти определенное слово в списке строк можно с помощью for
петли, incr
и набор списков связанных команд, таких как llength
, lindex
а также lsearch
, Каждая строка в Tcl может интерпретироваться и обрабатываться как список. Реализация может выглядеть так:
# Searching for a word "word"
set neddle "word"
set w -1
# For each line (you can use `foreach` command here)
for {set l 0} {$l < [llength $lines]} {incr l} {
# Treat a line as a list and search for a word
if {[set w [lsearch [lindex $lines $l] $neddle]] != -1} {
# Exit the loop if you found the word
break
}
}
if {$w != -1} {
puts "Word '$neddle' found. Line index is $l. Word index is $w."
} else {
puts "Word '$neddle' not found."
}
Здесь скрипт перебирает строки и ищет в каждом из них данное слово, как если бы оно было списком. При выполнении команды list для строки она по умолчанию разделяется на пробелы. Цикл останавливается, когда слово находится в строке (когда lsearch
возвращает неотрицательный индекс).
Также обратите внимание, что команды list обрабатывают несколько пробелов как один разделитель. В этом случае это, кажется, желаемое поведение. С помощью split
Команда на строке с двойным пробелом фактически создаст "слово нулевой длины", которое может привести к неверному индексу слова.