下面代码运行后文档内只有标题,没有内容,请帮我找一下原因 # -*- coding: utf-8 -*- import urllib.request import re import pandas as pd import time def getdata(url): req = urllib.request.Request(url) req.add_header('User-Agent', ' Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36') data = urllib.request.urlopen(req).read().decode('utf-8') str1 = str(data) pat = '''<tr> <td>(.*?)</td> <td>(.*?)</td> <td>(.*?)</td> <td>(.*?)</td> <td>.?</td> </tr>''' result = re.compile(pat).findall(str1) return result if __name__ == '__main__': for i in range(2018, 2020): print('正在收集第%d年数据' % i) rank = [] country = [] zhou = [] total = [] url = 'https://www.kuaiyilicai.com/stats/global/yearly/g_gdp/' + str(i) + '.html' data = getdata(url) for j in range(0, len(data)): rank.append(data[j][0]) country.append(data[j][1]) zhou.append(data[j][2]) total.append(data[j][3]) dataframe = pd.DataFrame({'排名': rank, '国家/地区': country, '所在洲': zhou, 'GDP(美元计)': total}) with open(str(i) + "年世界gdp排名.csv", mode="w", encoding="utf_8_sig") as f: dataframe.to_csv(f, index=False, sep=',') print(i, '年数据收集完成')
时间: 2024-04-28 07:21:54 浏览: 9
这个代码的问题可能是在正则表达式的匹配上。你可以把这一行代码:
```
pat = '''<tr> <td>(.*?)</td> <td>(.*?)</td> <td>(.*?)</td> <td>(.*?)</td> <td>.?</td> </tr>'''
```
修改为:
```
pat = '''<tr> <td>(.*?)</td> <td>(.*?)</td> <td>(.*?)</td> <td>(.*?)</td> <td>(.*?)</td> </tr>'''
```
原因是因为在该网页中,每一行的最后一个数据被包含在了 `<td>` 标签内,而原来的正则表达式并没有匹配到该数据。
相关问题
文件第1行代码:# -*- coding: utf-8 -*-
文件的第一行代码 "# -*- coding: utf-8 -*-" 是用来指定文件的编码方式为 UTF-8。在 Python 2 中,这一行的作用是告诉解释器以 UTF-8 编码方式解析文件中的字符。而在 Python 3 中,默认情况下,所有的源代码文件都被视为使用 UTF-8 编码,因此这一行在 Python 3 中并不是必需的。
UTF-8 是一种通用的字符编码方式,它可以表示几乎所有的字符,包括各种语言的字符和特殊符号。指定文件编码方式为 UTF-8 可以确保在文件中使用各种字符时不会出现编码错误。
如果你的代码中包含了特殊字符或其他非 ASCII 字符,建议在文件的第一行添加 "# -*- coding: utf-8 -*-" 这样的声明,以便告知解释器正确的编码方式。这样可以避免出现编码相关的错误和警告。
请注意,这个声明必须出现在文件的第一行,前面不能有任何其他内容,包括注释。否则,解释器可能无法正确解析该声明。
# -*- coding: utf-8 -*-不起作用
如果`# -*- coding: utf-8 -*-`在你的代码中不起作用,可能是因为你的代码中已经存在其他编码方式的声明,或者编码声明位置不正确。请确保`# -*- coding: utf-8 -*-`在代码文件的开头,并且没有其他编码声明在它之前。
另外,如果你使用的是Python 3.x版本,那么默认的编码方式已经是UTF-8,不需要额外的编码声明。你可以尝试移除`# -*- coding: utf-8 -*-`这行代码,看看问题是否解决。
如果你仍然遇到编码问题,可以尝试使用`encode()`方法将字符串转换为字节序列,并指定合适的编码方式。例如:
```python
my_string = "你好"
encoded_string = my_string.encode('utf-8')
```
这样可以将字符串编码为UTF-8字节序列。希望这些方法能够帮助你解决问题!