我已经建立了一个简单的网络摩天大楼,从一个给定城市名称的网站上获取人口。输出的字符串格式为:"City,State | Data USA Population“
例如,对于新士麦那海滩,运行print(search.text)将返回以下字符串:
佛罗里达州新士麦那海滩| Data USA 25,770
我希望程序将其写在csv文件中,但当我希望它在一个单元格中时,数字被分隔在多个列中。看起来“新士麦那海滩,佛罗里达州|数据美国”根本没有被写入,为什么?
下面是我编写csv的代码:
import csv
with open('population.csv', 'w') as f:
thewriter = csv.writer(f)
thewriter.writerow(search.text)这是我在CSV文件中的输出。
2| 5|,| 7| 7| 0| (每个|表示一个新列)我希望csv文件在一个单元格中写入25,770,就像这样。也不是必需的,但如果程序实际上也写入了城市名称,则会很有用。我做错什么了?
发布于 2021-02-12 07:59:14
假设您不能在,上拆分,或者由于您的人口包含逗号和您的城市名称包含空格。我们可以通过几种方式做到这一点。
使用列表slice
拆分
search = 'New Smyrna Beach, FL | Data USA 25,770'
with open('test.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow([search.split(',')[0], search.split(' ')[-1]])正则表达式
import re
with open('test.csv', 'w') as f:
writer = csv.writer(f)
city = re.match(r'^([^,]*)', search).group(0)
population = re.findall(r'(\d+,\d+)', search)[0]
writer.writerow([city, population])输出

https://stackoverflow.com/questions/66164549
复制相似问题