# The flow: models2.objects.filter(model1_id__in = md1_ids)
# And you want to get model3 ? ~> need ids to query
# ~> Query 1:
md3_ids = models2.objects.filter(model1_id__in = md1_ids).values_list("model3_id", flat="true")
md3 = Models3.objects.filter(pk__in md3_ids)
结束它在每一行添加\ n,结束程序才能工作,只能使用最后一行......
请举例,我尝试任何结束任何解决方案,我发现这里不适合我。
答案 0 :(得分:24)
你可以切掉最后一个角色:
read_line = read_line[:len(read_line)-1]
也许更好的方法是使用字符串库:
read_line = strings.TrimSuffix(read_line, "\n")
答案 1 :(得分:5)
如果您想逐行阅读文件,使用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
的第二个参数给出的任何字符匹配,则删除该字符。