Ответ 1
Вы можете отрезать последний символ:
read_line = read_line[:len(read_line)-1]
Возможно, лучший подход заключается в использовании библиотеки строк:
read_line = strings.TrimSuffix(read_line, "\n")
file, _ := os.Open("x.txt")
f := bufio.NewReader(file)
for {
read_line, _ := ReadString('\n')
fmt.Print(read_line)
// other code what work with parsed line...
}
end it add\n на каждой строке, конечная программа на работу, работайте только с последней строкой...
Пожалуйста, приложите пример, я попробую что-нибудь прекратить любое решение, что я нахожу здесь, не работает для меня.
Вы можете отрезать последний символ:
read_line = read_line[:len(read_line)-1]
Возможно, лучший подход заключается в использовании библиотеки строк:
read_line = strings.TrimSuffix(read_line, "\n")
Если вы хотите читать файл построчно, использовать bufio.Scanner
будет проще. Сканер не включает в строку endline
(\n
или \r\n
).
file, err := os.Open("yourfile.txt")
if err != nil {
//handle error
return
}
defer file.Close()
s := bufio.NewScanner(file)
for s.Scan() {
read_line := s.Text()
// other code what work with parsed line...
}
Если вы хотите удалить endline
, я предлагаю вам использовать TrimRightFunc
, т.е.
read_line = strings.TrimRightFunc(read_line, func(c rune) bool {
//In windows newline is \r\n
return c == '\r' || c == '\n'
})
Обновление:
Как указывает @GwynethLlewelyn, использование TrimRight
будет проще (чище), т.е.
read_line = strings.TrimRight(read_line, "\r\n")
Внутренне, функция TrimRight
вызывает TrimRightFunc
и удаляет символ, если он соответствует любому символу, указанному в качестве второго аргумента TrimRight
.