go - 如何丢弃列表中具有某些字符串的行并输出到新列表
问题描述
我有一个从 XML 网站下载的列表。我试图通过丢弃包含某个字符串的行并构建相同类型的列表而不包含包含该字符串的行来过滤列表。我有一个struct
类型有另一个struct
。我正在尝试使用regexp
and replaceall
,但在replaceall
.
func (*Regexp) ReplaceAll
func (re *Regexp) ReplaceAll(src, repl []byte) []byte
可能有一种更简单的方法可以将列表过滤为我在某处丢失的新列表,但我发现这是迄今为止最接近的解决方案。请分享其他对新列表进行 grep 和删除行的方法。该列表是正文中的一个字节,并作为 xml 下载。
type PeopleList struct {
Peoples []Person `xml:"peoples>person"`
}
type Person struct {
ADD string `xml:"add,attr"`
Loc string `xml:"loc,attr"`
Har string `xml:"har,attr"`
Name string `xml:"name,attr"`
Country string `xml:"country,attr"`
Num string `xml:"num,attr"`
ADD2 string `xml:"add2,attr"`
Distance float64
func fetchPeopleList(userinfo Userinfo) PeopleList {
var p byte
jam, err := http.Get(string(peoplelisturl))
iferror (err)
body, err := ioutil.ReadAll(jam.Body)
peeps := body
reg := regexp.MustCompile("(?m)[\r\n]+^.*BAD:.*$")
rep := reg.ReplaceAll(peeps, p) // Here fails probably because of my syntax. Error: cannot use p (variable of type byte) as []byte value in argument to re.ReplaceAll
fmt.Println(rep)
iferror (err)
defer jam.Body.Close()
最后,我想要一个与第一个格式相同的新列表,只是没有包含字符串的行。
解决方案
您的问题说您想“丢弃行”,但是Replace
/ ReplaceAll
,顾名思义,用于替换匹配的模式。您的正则表达式也是一个简单的子字符串匹配,因此显而易见的解决方案似乎是逐行读取文件 - 正如您的标题所说 - 丢弃包含子字符串的行。
func fetchPeopleList(userinfo Userinfo) PeopleList {
jam, err := http.Get(string(peoplelisturl))
iferror (err)
br := bufio.NewReader(jam.Body)
defer jam.Body.Close()
for {
line,err := br.ReadString('\n')
if !strings.Contains(line, "BAD:") {
fmt.Println(line) // or whatever you want to do with non-discarded lines
}
if err != nil {
break
}
}
推荐阅读
- javascript - 使用打字稿变量的外部资源
- c# - 在 SQL Server 中插入新数据的 Post 或 Put 方法?
- android - 如何解决 A/瑜伽:availableHeight 是不确定的,所以 heightMeasureMode 必须是 YGMeasureModeUndefined
- kubernetes - 如何使用 Kubernetes 插件在 Jenkins 管道中的容器中设置 envVars
- node.js - 使用我的应用程序登录名登录到我的 Gitlab CE 安装
- c++ - 让火飘起来
- django - Django:使用 get_or_create 和 unique_together 时出错
- html - CSS 如何将标题放在边框的前面?
- powershell - 根据名称移动文件(有额外的复杂性)
- mysql - 如何使用 Rails 功能解决 mysql 中的 Unicode 字符问题