我正在尝试用 Go 编写一个 Web 客户端,但是当我检查 http 请求正文的返回值时,我得到一个数字数组,而不是文本。
这是产生输出的程序中最孤立的版本。我想我没有用 ioutil 做点什么,但不知道是什么。
package main
import "fmt"
import "net/http"
import "io/ioutil"
func main() {
resp, err := http.Get("http://test.com/")
if err != nil {
fmt.Println(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
fmt.Print(body)
}
Run Code Online (Sandbox Code Playgroud)
输出看起来像:
[239 187 191 60 33 68 79 67 84 89 80 69 32 104 116 109 108 ...
而不是 test.com 返回的测试
当我运行此输入(保存为变量'line')时:
xsc_i,202,"House of Night",21,"/21_202"
Run Code Online (Sandbox Code Playgroud)
通过csv阅读器:
for row in csv.reader(line):
print row
Run Code Online (Sandbox Code Playgroud)
它会分割字符串,而不仅仅是字段
['x']
['s']
['c']
['_']
['i']
['', '']
['2']
['0']
['2']
['', '']
Run Code Online (Sandbox Code Playgroud)
等等
即使我明确设置了分隔符,它也会出现此行为:
csv.reader(line, delimiter=",")
Run Code Online (Sandbox Code Playgroud)
它甚至将字符串视为数组,但我无法弄清楚为什么,我不能只用逗号分割,因为许多逗号都在输入中的""字符串中.
Python 2.7,如果重要的话.
循环遍历一些数据,我想捕获显示为页面 ID 的数字字符串(每行多个)。但是,我只想将数字字符串作为特定 URL 的一部分进行匹配,但我不想记录URL,只是数字。
URL 是相对的,具有可变长度的数字字符串,形式为
/view/123456.htm
Run Code Online (Sandbox Code Playgroud)
此处返回的数据将是“123456”
我目前正在使用 re.findall 来识别正确的 URL,然后使用 re.sub 来提取数字字符串。
views = re.findall(r"/view/\d*?.htm", line)
for view in views:
view = re.sub(r"/view/(\d+).htm", r"\1", view)
pagelist.append(view)
Run Code Online (Sandbox Code Playgroud)
有没有办法做类似的事情
views = re.findall(r"/view/(\d*?).htm", r"\1", line) #I know this doesn't work
Run Code Online (Sandbox Code Playgroud)
原始 findall() 在哪里只返回括号中的匹配部分?