将爬取到的字符串通过删除各种乱码后,写入EXCEL.

修改第三版:基本实现需要的功能,将爬取到的字符串通过删除各种乱码后,写入EXCEL.
1、格式化字符内容
2、将格式化内容写入EXCEL


from openpyxl import Workbook
from pandas import DataFrame
import pandas as pd
str = '生产经营场所地址:江西省宜春市袁州区渥江镇湾田村 行业类别:猪的饲养 所在地区:江西省-宜春市-袁州区 发证机关:宜春市生态环境局'
print(str)
#print(str.split(':',8))

u1,u2,u3,u4,u5 = str.split(':',4)

print(u1)#生产经营场所地址
#print(u2)#江西省宜春市袁州区渥江镇湾田村 行业类别
#print(u3) #猪的饲养 所在地区
#print(u4)#江西省-宜春市-袁州区 发证机关
#print(u5)#宜春市生态环境局
f1=u2.split(' ') #['江西省宜春市袁州区渥江镇湾田村', '行业类别']  字符串已变成列表属性
f2=f1             #['江西省宜春市袁州区渥江镇湾田村', '行业类别']  字符串已变成列表属性
#print('.................................................')
f1=f1[0:1]   #['江西省宜春市袁州区渥江镇湾田村']
f2=f2[1:]    #['行业类别']
print(f1)
print(f2)
print('.................................................')
g1=u3.split(' ')#['猪的饲养', '所在地区']
g2=g1
g1=g1[0:1]   #['猪的饲养']
g2=g2[1:]    #['所在地区']
print(g1)
print(g2)
print('.................................................')
h1=u4.split(' ')#['猪的饲养', '所在地区']
h2=h1
h1=h1[0:1]   #['江西省-宜春市-袁州区']
h2=h2[1:]    #['发证机关']
#h1=str(h1)
print(h1)
print(h2)
#a=str.find(':',4)
#print(str[0:a])
#b=str[0:a]
#c=str.find(' ')
#d=str[0:c]
#a=str.split(' ')
#a=str.find(':',4)
#print(a)
# -*- coding: utf-8 -*-

wb = Workbook()    #创建文件对象

# grab the active worksheet
ws = wb.active     #获取第一个sheet
cell=ws["A1"]
cell.value=u1
cell=ws['A2']
cell.value=f1[0]
cell=ws["B1"]
cell.value=f2[0]
cell=ws['B2']
cell.value=g1[0]
cell=ws["C1"]
cell.value=g2[0]
cell=ws['C2']
cell.value=h1[0]
cell=ws["D1"]
cell.value=h2[0]
cell=ws['D2']
cell.value=u5


wb.save("d:\\sample.xlsx")

str = '生产经营场所地址:江西省宜春市袁州区渥江镇湾田村 行业类别:猪的饲养 所在地区:江西省-宜春市-袁州区 发证机关:宜春市生态环境局'
print(type(str))
#a=str.find(':',4)
#print(str[0:a])
#b=str[0:a]
#c=str.find(' ')
#d=str[0:c]
a=str.split(' ')
#a=str.find(':',4)
print(a)
flg = 0
i=4

#rep_res6 =str.replace(':','Hello')
#print(rep_res6)


b=str.find(':')  #找到字符串中第1个‘:’的位置
c=str[0:b]
#c=c.replace(':',' ')
d=str.find('', '')  #找到字符串中第1个‘, ’的位置
e=str[b+1:d]
print(c)
print(d)在这里插入代码片
# encoding:utf-8
import pandas as pd
import openpyxl



wk = openpyxl.load_workbook(r"t.xlsx")                              # 读取本地的excel
wk_name = wk.sheetnames                                             # 读取这个表格所有的sheet 名称
wk_sheet = wk[wk_name[0]]                                           # 获取这个表格的第一个 sheet
print(wk_sheet)
content_A1=wk_sheet.cell(row=1,column=1).value.replace("\r\n", "")   #对HTML爬取数据进行特殊字符第1次替换
content_A2=content_A1.replace("    			", " ")                 #将替换后的数据再次将多个空格(内含不知道什么字符,直接进行COPY的)替换成一个空格
content_A1=content_A2.strip().replace('   			',' ')          #将替换后的数据再次将多个空格(内含不知道什么字符,直接进行COPY的)替换成一个空格
#wk_sheet.cell(row=1,column=1).value=content_A1
kongge=content_A1.split(' ')
print(type(content_A1))
fenhao=str(kongge)
fenhao=fenhao.split(':')
print(fenhao)
#print(fenhao)
#  将数据写入新文件
# 将数据写入第 i 行,第 j 列
#sheet1 = wk.add_sheet(u'sheet1',cell_overwrite_ok=True)
flg = 0
for lines in last_Data:
    flg +=1
    for i in range(len(lines)):
        ws.cell(flg,i+1,lines[i])
    workbook.save("2.xlsx")

wk.save(r"tt.xlsx")  # 保存为s.xlsx

#wk_sheet.unmerge_cells('a1:b1')  # 拆分 b1:E2区域单元格

<think>好的,我现在需要帮助用户解决如何以编程方式将数据保存到本地CSV文件的问题。用户可能有一定的编程基础,但不太清楚具体步骤。首先,我要回忆一下常见的编程语言,比如Python、JavaScript、Java等,用户可能使用的是其中一种。不过根据提供的引用,大部分引用都提到了Python,例如引用[1]、[4]、[5]都是关于Python保存CSV的例子。所以用户很可能是在用Python,但也不排除其他可能。 接下来,我需要确定用户的需求。他们想将数据保存为CSV,可能需要具体的代码示例。引用[1]展示了使用Python的csv模块读取和写入CSV文件的方法,引用[4]和[5]提到了使用requests、parsel以及pandas库来爬取数据并保存为CSV。用户可能已经有数据,需要保存,或者需要从其他来源获取数据后再保存。 用户的问题比较广泛,可能需要分步骤解答。首先,我应该介绍通用的方法,然后针对不同编程语言给出示例。不过根据引用,Python的解决方案较多,可能应该以Python为主,但也可以简要提及其他语言,比如JavaScript或Java,不过没有相关引用支持,可能需要避免猜测,或者仅提供Python的方法。 另外,用户可能遇到编码问题,如引用[2]提到的WPS插件解决Unicode编码问题,所以在保存CSV时需要注意编码格式,比如使用UTF-8,避免乱码。引用[3]提到MySQL导出CSV时数据格式的问题,比如长数字被科学计数法显示,这可能也需要在保存时处理。 因此,在回答中需要包含以下几点: 1. 使用Python的csv模块写入CSV文件,包括处理不同数据类型。 2. 使用pandas库的to_csv方法,方便快捷。 3. 注意文件编码,推荐UTF-8。 4. 处理可能的数据格式问题,比如长数字、特殊字符。 5. 提供示例代码,并解释每个步骤。 6. 引用相关的引用内容来支持建议,比如引用[1]、[2]、[4]、[5]。 需要检查是否有遗漏的步骤,比如文件的打开和关闭,是否需要处理头部(标题行),以及如何处理不同操作系统的路径问题(比如Windows中使用双反斜杠或正斜杠)。 可能的问题点:用户的数据结构是怎样的?如果是列表的列表,或者字典列表,处理方式不同。例如,csv.writerows需要迭代写入每一行,而pandas可能需要DataFrame结构。 需要确保示例代码正确,比如在Python中使用csv.writer时,是否需要指定newline参数,在Windows中可能出现空行问题,所以建议在open函数中添加newline=''参数。引用[1]中的代码示例使用了"r"模式读取,而写入可能需要"w"模式,并指定编码。 此外,引用[5]提到使用pandas的to_csv方法,并设置index=None,避免保存索引列。这也是需要注意的地方。 总结步骤: 1. 准备数据,通常是一个二维列表或字典列表。 2. 导入必要的库(csv或pandas)。 3. 打开文件,指定写入模式、编码。 4. 创建csv.writer对象,写入标题行和数据行。 - 或者使用pandas的DataFrame直接保存。 5. 处理可能出现的异常或错误,如文件权限、路径存在性等。 6. 验证生成的文件是否正确,注意编码和数据格式。 现在需要将这些步骤转化为清晰的回答,分点说明,并提供代码示例。同时,根据用户提供的引用,适当引用相关文献,比如使用csv模块时引用[1],使用pandas时引用[5],处理编码问题时引用[2]。 最后,生成相关问题,可能包括如何处理乱码、如何追加数据到现有CSV文件、如何处理特殊字符等,或者不同编程语言的方法。</think>### 如何以编程方式将数据保存为本地CSV文件 以下是使用 **Python** 保存数据的两种常用方法,涵盖基础操作和高效处理方案: --- #### 方法一:使用标准 `csv` 模块 **适用场景**:小规模数据、需要精细控制写入过程。 **步骤**: 1. **准备数据**:二维列表(每行数据)或字典列表(带表头)。 2. **写入文件**:指定编码格式(推荐 `utf-8` 避免乱码[^2]),使用 `csv.writer` 逐行写入。 ```python import csv # 示例数据(二维列表) data = [ ["姓名", "年龄", "城市"], ["张三", 25, "北京"], ["李四", 30, "上海"] ] # 写入CSV文件 with open("data.csv", "w", encoding="utf-8", newline="") as f: writer = csv.writer(f) writer.writerows(data) ``` **说明**: - `newline=""` 防止Windows系统生成空行[^1] - 若数据包含特殊字符(如逗号),`csv` 模块会自动处理转义。 --- #### 方法二:使用 `pandas` 库 **适用场景**:大规模数据、需要快速操作或复杂数据处理。 **优势**:支持直接保存为Excel、JSON等格式[^5],自动处理数据类型。 ```python import pandas as pd # 示例数据(字典列表) data = [ {"姓名": "张三", "年龄": 25, "城市": "北京"}, {"姓名": "李四", "年龄": 30, "城市": "上海"} ] # 转换为DataFrame并保存 df = pd.DataFrame(data) df.to_csv("data.csv", index=False, encoding="utf-8") ``` **说明**: - `index=False` 避免保存索引列 - 处理长数字(如身份证号)时,可添加引号或强制列为字符串: ```python df["身份证"] = df["身份证"].astype(str) # 防止科学计数法[^3] ``` --- #### 注意事项 1. **文件路径**:确保目录存在,避免权限问题。 2. **编码格式**:统一使用 `utf-8` 兼容多语言字符。 3. **性能优化**:大数据量时,分批次写入或使用 `pandas` 更高效。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值