当前位置: 首页 > news >正文

怎么借助ChatGPT处理数据结构的问题

目录

使用ChatGPT进行数据格式化转换

代码示例

ChatGPT格式化数据提示语

代码示例

批量格式化数据提示语

代码示例

ChatGPT生成的格式化批处理代码

使用ChatGPT合并不同数据源的数据

合并数据提示语

自动合并数据提示语

ChatGPT生成的自动合并代码

结论


数据合并是处理多个数据源的关键步骤,它允许我们将不同来源的数据整合到一个统一的数据集中。无论是合并CSV文件、SQLite数据库还是其他数据源,正确处理数据合并对于获得准确和全面的分析结果至关重要。

 

使用ChatGPT进行数据格式化转换

当需要进行数据格式化转换时,可以使用ChatGPT来辅助进行转换规则的设计和理解。以下是一些使用ChatGPT进行数据格式化转换的示例场景:

1. 数据格式描述:您可以向ChatGPT提供一个数据格式的描述,并询问它如何将一种格式的数据转换为另一种格式。例如,您可以询问如何将一个JSON对象转换为XML格式,或者如何将一个CSV文件转换为JSON格式。

2. 规则设计:您可以向ChatGPT提供带有示例数据的源格式和目标格式,并询问它如何设计转换规则。例如,在在将日期由 "YYYY-MM-DD" 格式转换为 "DD/MM/YYYY" 格式时,您可以询问它需要编写哪些规则或使用哪些函数来实现。

3. 工具推荐:您可以向ChatGPT询问有关数据格式化转换的工具或库的建议。例如,您可以询问ChatGPT有关Python中的哪个库适用于处理JSON数据,或者询问有哪些在线工具可以执行特定的数据转换任务。

代码示例

当进行数据格式化转换时,您可以使用编程语言(如Python)来实现具体的代码。下面是一个示例,演示如何将JSON数据转换为CSV格式的数据:

import json
import csvdef convert_json_to_csv(json_data, csv_filepath):# 读取JSON数据data = json.loads(json_data)# 获取列名(假设每个对象具有相同的键)keys = data[0].keys()# 创建CSV文件并写入列名with open(csv_filepath, 'w', newline='') as csv_file:writer = csv.DictWriter(csv_file, fieldnames=keys)writer.writeheader()# 遍历JSON数据并写入CSV文件for row in data:writer.writerow(row)print("转换完成!")# 假设有一个JSON数据字符串
json_data = '''
[{"name": "Alice","age": 25,"city": "New York"},{"name": "Bob","age": 30,"city": "San Francisco"},{"name": "Charlie","age": 35,"city": "Seattle"}
]
'''# 调用函数将JSON数据转换为CSV格式并保存
convert_json_to_csv(json_data, 'output.csv')

在上面的示例中,我们定义了一个函数 `convert_json_to_csv` 来执行转换。它将接受一个JSON数据字符串和一个指定的CSV文件路径作为参数。函数首先加载JSON数据,提取键作为CSV文件的列名,并使用`csv.DictWriter`在CSV文件中写入行数据。

 

ChatGPT格式化数据提示语

当使用ChatGPT来进行数据格式化时,您可以使用以下提示语来引导对话:

1. "我有一些数据需要进行格式化转换,你能帮助我吗?"
2. "我有一段JSON数据,我想将其转换为CSV格式,你知道怎么做吗?"
3. "我需要将日期数据从 'YYYY-MM-DD' 格式转换为 'DD/MM/YYYY' 格式,你有什么建议吗?"
4. "有没有什么工具或库可以用来处理数据格式化转换?"
5. "我想将一个文本文件中的数据转换为JSON格式,你能给我一些指导吗?"

通过以上提示语,您可以向ChatGPT提出具体的问题或要求,以便它能够提供更有针对性的回答和建议。请记住,尽管ChatGPT可以提供信息和指导,但最终的实际实现仍然需要您结合ChatGPT的建议和自身编程知识来完成。

代码示例

当进行数据格式化时,代码示例可以根据具体的格式转换需求而异。以下是一个示例,演示如何将日期格式从 "YYYY-MM-DD" 转换为 "DD/MM/YYYY":

import datetimedef format_date(date_str):# 解析日期字符串为日期对象date_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d")# 格式化日期为 "DD/MM/YYYY" 格式formatted_date = date_obj.strftime("%d/%m/%Y")return formatted_date# 示例日期字符串
date_string = "2023-08-21"
# 调用函数进行日期格式转换
formatted_date = format_date(date_string)print("转换前日期格式:", date_string)
print("转换后日期格式:", formatted_date)

在上面的示例中,我们定义了一个函数 `format_date`,它将接收一个日期字符串作为参数,并返回格式化后的日期字符串。函数使用 `datetime.strptime` 解析日期字符串为日期对象,然后使用 `strftime` 方法将日期对象格式化为 "DD/MM/YYYY" 格式的字符串。

批量格式化数据提示语

当需要批量格式化数据时,您可以使用以下提示语与ChatGPT交互:

1. "我有一批日期数据需要格式化,你能告诉我如何一次性对它们进行格式转换吗?"
2. "我有一个包含多个JSON对象的文件,我想将它们批量转换为CSV格式,你有什么建议吗?"
3. "有没有一种简便的方法可以批量处理文本文件中的数据并将其转换为特定的格式?"
4. "我需要将多个图片文件转换为另一种图像格式,你知道有什么工具或库可以批量处理吗?"
5. "我有一批音频文件,我想将它们格式化并提取特定的音频特征,你可以给我一些指导吗?"

 

代码示例

当需要批量处理数据进行格式化时,代码示例可以根据具体的需求和数据类型而异。以下是一个示例,演示如何批量将一批文本文件中的数据进行格式化处理:

import osdef format_text_files(input_folder, output_folder):# 确保输出文件夹存在os.makedirs(output_folder, exist_ok=True)# 遍历输入文件夹中的所有文件for filename in os.listdir(input_folder):input_filepath = os.path.join(input_folder, filename)output_filepath = os.path.join(output_folder, filename)# 打开输入文件并读取数据with open(input_filepath, 'r') as input_file:data = input_file.read()# 进行数据格式转换和处理# 例如,将文本转换为大写或小写formatted_data = data.upper()# 将格式化后的数据写入输出文件with open(output_filepath, 'w') as output_file:output_file.write(formatted_data)# 示例输入文件夹和输出文件夹路径
input_folder = '/path/to/input/folder'
output_folder = '/path/to/output/folder'# 执行批量格式化处理
format_text_files(input_folder, output_folder)

在上面的示例中,我们定义了一个函数 `format_text_files` 来处理批量的文本文件格式化。该函数接收一个输入文件夹路径和一个输出文件夹路径作为参数。函数将遍历输入文件夹中的所有文件,读取文件数据,对数据进行格式化处理(在示例中为转换为大写),然后将格式化后的数据写入到输出文件夹中的相应文件。

ChatGPT生成的格式化批处理代码

如果你想使用ChatGPT API来帮助你格式化数据,你可以通过向API发送请求,然后解析和处理返回的回复来实现。以下是一个示例代码,演示如何使用Python的requests库来调用ChatGPT API进行数据格式化:

import requestsdef format_data_with_chatgptapi(data):# ChatGPT API请求的URLapi_url = 'https://api.openai.com/v1/chat/completions'# 你的访问令牌api_key = 'YOUR_API_KEY'# 设置请求头headers = {'Content-Type': 'application/json','Authorization': f'Bearer {api_key}'}# 设置请求体payload = {'messages': [{'role': 'system', 'content': '你好,我有一些数据需要格式化。'}],'max_tokens': 50,'temperature': 0.6,'stop': '\n'}# 添加需要格式化的数据到请求体payload['messages'].append({'role': 'user', 'content': data})try:# 发送POST请求到ChatGPT APIresponse = requests.post(api_url, headers=headers, json=payload)response.raise_for_status()# 解析返回的JSON数据result = response.json()# 提取ChatGPT的回复formatted_data = result['choices'][0]['message']['content']return formatted_dataexcept requests.exceptions.RequestException as e:print('发送请求到ChatGPT API时出错:', str(e))return None# 示例数据需要格式化
data = '这是需要格式化的数据'# 调用ChatGPT API进行数据格式化
formatted_data = format_data_with_chatgptapi(data)# 输出格式化后的数据
print("格式化后的数据:", formatted_data)

在上面的示例中,你需要替换`YOUR_API_KEY`为你的OpenAI API访问密钥。你可以在OpenAI的网站上获取你的API密钥。此外,你还可以根据你的具体需求和ChatGPT API的响应进行额外的处理和解析。

 

使用ChatGPT合并不同数据源的数据

要使用ChatGPT合并不同数据源的数据,您可以通过交互式对话与ChatGPT进行自然语言的交流,并逐步生成代码来实现数据合并的过程。以下是一个示例对话,展示了与ChatGPT对话来合并不同数据源的数据的过程:

用户:我有两个不同的数据源,一个是CSV文件,另一个是SQLite数据库,我想将它们合并成一个数据集。你有什么建议吗?

ChatGPT:你可以使用pandas库来处理CSV文件和读取SQLite数据库。首先,你需要分别读取CSV文件和SQLite数据库中的数据,然后将它们合并成一个数据集,最后可以将结果保存到新的CSV文件或SQLite数据库中。

用户:那么我如何进行数据合并的代码开发?

ChatGPT:下面是一个简单的代码框架,可以作为你开始编写代码的思路参考:

import pandas as pd
import sqlite3# 从CSV文件读取数据
csv_data = pd.read_csv('/path/to/csv_file.csv')# 从SQLite数据库中读取数据
conn = sqlite3.connect('/path/to/database.db')
sql_data = pd.read_sql_query('SELECT * FROM table_name', conn)# 合并数据集
merged_data = pd.concat([csv_data, sql_data], axis=0)# 保存合并后的数据到CSV文件
merged_data.to_csv('/path/to/merged_data.csv', index=False)# 或者保存到SQLite数据库
merged_data.to_sql('table_name', conn, if_exists='replace', index=False)
conn.close()

请注意,在上述示例中,你需要将`/path/to/csv_file.csv`和`/path/to/database.db`替换为你的实际文件路径和SQLite数据库路径,并根据需要修改表名和保存路径。此外,你可能还需要根据实际情况进行错误处理和数据清洗操作。

合并数据提示语

当您与ChatGPT合作合并不同数据源的数据时,您可以使用以下提示语与ChatGPT进行对话:

- "我有两个不同的数据源,一个是CSV文件,另一个是SQLite数据库,我想将它们合并成一个数据集。你有什么建议吗?"
- "哪种方法可以帮助我将两个不同数据源的数据合并在一起?"
- "我怎样用Python代码将CSV文件和SQLite数据库中的数据合并?"
- "我如何处理两个数据源中的数据重复和缺失值,以便在合并时获得准确的结果?"
- "有没有示例代码可以展示如何合并不同数据源的数据?"
- "请告诉我如何使用pandas库将不同数据源的数据合并成一个数据集。"
- "请给我一个合并CSV文件和SQLite数据库数据的步骤指南。"
- "有没有一些最佳实践来处理不同数据源的数据合并?"

通过与ChatGPT进行交互,并提供关于您的数据源、合并方式和最佳实践的上下文信息,ChatGPT将可以提供更专业化的建议和代码示例来帮助您实现数据合并操作。请确保与ChatGPT进行明确和详细的对话,以确保您得到最准确和适合的代码建议。

 

自动合并数据提示语

在与ChatGPT进行对话时,可以使用以下提示语来获取关于自动合并数据的建议:

- "我有多个数据源,想要自动合并它们。有什么建议吗?"
- "有没有一种方法可以自动识别和合并多个数据源的数据?"
- "我需要一个自动化的解决方案来处理多个数据源的数据合并。你有什么推荐吗?"
- "有没有一些工具或技术可以帮助我自动合并数据,而不需要手动干预?"
- "我想要一个自动化脚本,可以自动合并多个数据源的数据。有什么思路吗?"
- "有没有一些库或算法可以自动识别和匹配多个数据源的关键字段,然后进行数据合并?"
- "请给我一些关于自动合并数据的最佳实践和原则。"

通过与ChatGPT进行交互,并提供关于自动合并数据的背景信息和上下文,ChatGPT将能够提供针对自动化合并数据的更具体建议和指导。请确保与ChatGPT进行细致和清晰的对话,以便获得最准确和适应的代码和策略方案。

ChatGPT生成的自动合并代码

以下是ChatGPT生成的示例自动合并数据的代码:

import pandas as pd# 读取所有数据源的数据
data_sources = ["/path/to/data_source1.csv","/path/to/data_source2.csv","/path/to/data_source3.csv"
]data_frames = []
for source in data_sources:df = pd.read_csv(source)data_frames.append(df)# 自动合并数据
merged_data = pd.concat(data_frames, ignore_index=True)# 保存合并后的数据
merged_data.to_csv("/path/to/merged_data.csv", index=False)print("数据合并完成并保存为merged_data.csv")

请注意,生成的代码只是一个示例,需要根据实际情况进行修改和调整。上述代码假设数据源是CSV文件,并且使用pandas库来读取和合并数据。你需要将`/path/to/data_sourceX.csv`替换为实际的数据源路径,并根据需要进行适当的数据清洗和处理。

结论

数据合并是数据处理中的重要环节,它可以帮助我们获得更全面、准确的数据视图。我们要根据特定情况对代码进行修改和优化,并根据数据的特性进行适当的数据清洗和处理,以确保合并的结果尽可能准确和有用。

相关文章:

怎么借助ChatGPT处理数据结构的问题

目录 使用ChatGPT进行数据格式化转换 代码示例 ChatGPT格式化数据提示语 代码示例 批量格式化数据提示语 代码示例 ChatGPT生成的格式化批处理代码 使用ChatGPT合并不同数据源的数据 合并数据提示语 自动合并数据提示语 ChatGPT生成的自动合并代码 结论 数据合并是…...

Docker容器无法启动 Cannot find /usr/local/tomcat/bin/setclasspath.sh

报错信息如下 解决办法 权限不够 加上--privileged 获取最大权限 docker run --privileged --name lenglianerqi -p 9266:8080 -v /opt/docker/lenglianerqi/webapps:/usr/local/tomcat/webapps/ -v /opt/docker/lenglianerqi/webapps/userfile:/usr/local/tomcat/webapps/u…...

Pytorch-day08-模型进阶训练技巧-checkpoint

PyTorch 模型进阶训练技巧 自定义损失函数动态调整学习率 典型案例:loss上下震荡 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BndMyRX0-1692613806232)(attachment:image-2.png)] 1、自定义损失函数 1、PyTorch已经提供了很多常用…...

【ArcGIS Pro二次开发】(61):样式(Style)和符号(Symbol)

在 ArcGIS Pro SDK 中,地图要素符号(Symbol)和符号样式(Style)是2个很重要的概念。 【Symbol】是用于表示地图上不同类型的要素(如点、线、面)的图形化表示。 在地图中,各种要素都…...

深入理解 HTTP/2:提升 Web 性能的秘密

HTTP/2 是一项重大的网络协议升级,旨在提升 Web 页面加载速度和性能。在这篇博客中,我们将深入探讨 HTTP/2 的核心概念以及如何使用它来加速网站。 什么是 HTTP/2? HTTP/2 是 HTTP 协议的下一个版本,旨在解决 HTTP/1.1 中的性能…...

800V高压电驱动系统架构分析

需要电驱竞品样件请联:shbinzer (拆车邦) 过去一年是新能源汽车市场爆发的一年,据中汽协数据,2021年新能源汽车销售352万辆,同比大幅增长157.5%。新能源汽车技术发展迅速,畅销车辆在动力性能…...

Camunda_3:主动撤回

貌似国际主流认知工作流通常不支持撤回/驳回,流程只能向前进行。而撤回/驳回算是一种中国特色吧。 因此Camunda对于流程修改也仅仅提供了runtimeService.createProcessInstanceModification(instanceId)来修改流程。对于撤回/驳回这种操作得自己想办法。通常的撤回/…...

ClickHouse(二十三):Java Spark读写ClickHouse API

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &…...

Linux下的GPIO基本概念指南

一、什么是GPIO 在Linux中,GPIO(General Purpose Input/Output,通用输入输出)是一种用于控制外部设备和传感器的通用接口。它允许你通过软件控制数字信号,从而实现各种硬件设备的交互,如LED、按钮、传感器、马达等。 每个GPIO引脚…...

快速解决Spring Boot跨域困扰:使用CORS实现无缝跨域支持

跨域问题 什么是跨域? 跨域(Cross-Origin Issue)的存在是因为浏览器的安全限制,它防止恶意网站利用跨域请求来获取用户的敏感信息或执行恶意操作。浏览器通过实施同源策略来限制网页在不同源之间进行资源访问或交互的情况。当一…...

【【萌新的STM32学习-13之GPIO寄存器的用法】】

萌新的STM32学习-13之GPIO寄存器的用法 从外部来看我们有很多个GPIO 分为ABCDEF等等 每个GPIO都有16个引脚 每个引脚的名字是PA0到PA15 这是外部的看法 对于内部 引脚自然会有引脚的功能传入的模式 状态 频率 等…...

Android开发基础知识总结(一)初识安卓Android Studio

一.基础理论知识 1.Linux相当于是地基。 MIUI,EMUI等操作系统,是基于安卓的改版——且裁掉了一部分Google的服务。 (鸿蒙虽然是改版,但和安卓的架构基本上一致) 2.Kotlin和Java都是JVM语言,必须先复习好…...

常见的网络设备有哪些?分别有什么作用?

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、网络设备的概述 二、常见的网络设备 1、…...

斗鱼财报盈利的背后:左手艳舞、右手擦边

本月14日,直播平台斗鱼发布了其第二季度财报,面对“看起来还不错的数据”,其对外着重强调了“连续两个季度实现盈利”,并称“斗鱼收入结构持续优化”“斗鱼盈利能力提升”“斗鱼稳健增长可期”“督导提升了内容审核能力”。 财报…...

布隆过滤器

思考一个问题:如果我想判断一个元素是否存在某个集合里面怎么做? 一般的解决方案是先把所有元素保存起来,然后通过循环比较来确定。 但是如果我们有几千万甚至上亿的数据的时候},虽然可以通过不同的数据结构来优化数据…...

element-ui中二次封装一个带select的form组件

带select的form组件 样式 代码 <template><el-form-item label"是否有" class"append" prop"tag"><el-form-itemprop"isShare"><el-select v-model"query.tag"><el-option v-for"(item, …...

07.利用Redis实现点赞排行榜功能

学习目标&#xff1a; 提示&#xff1a;学习如何利用Redisson实现点赞排行榜功能&#xff0c;按照时间顺序 当用户给某一篇文章点赞后&#xff0c;会再数据库中存储一条数据&#xff0c;并且在Redis中存储一条数据为当前博客的点赞用户标识&#xff0c;来区分哪个用户对文章进…...

【前端vue升级】vue2+js+elementUI升级为vue3+ts+elementUI plus

一、工具的选择 近期想将vuejselementUI的项目升级为vue3tselementUI plus&#xff0c;以获得更好的开发体验&#xff0c;并且vue3也显著提高了性能&#xff0c;所以在此记录一下升级的过程对于一个正在使用的项目手工替换肯定不是个可实现的解决方案&#xff0c;更优方案是基于…...

多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测

多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测。 模型描…...

go-test

单元测试 基本用法 Go语言测试 常用reflect.DeepEqual()对slice进行比较 跳过某些测试用例 func TestTimeConsuming(t *testing.T) {if testing.Short() {t.Skip("short模式下会跳过该测试用例")}... }当执行go test -short时就不会执行上面的TestTimeConsuming测…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)

本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢&#xff0c;连接红外测温传感器&#xff0c;可实时精准捕捉宠物体温变化&#xff0c;以便及时发现健康异常&#xff1b;水位检测传感器时刻监测饮用水余量&#xff0c;防止宠物…...

JS红宝书笔记 - 3.3 变量

要定义变量&#xff0c;可以使用var操作符&#xff0c;后跟变量名 ES实现变量初始化&#xff0c;因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符&#xff0c;可以创建一个全局变量 如果需要定义…...

CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx

“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网&#xff08;IIoT&#xff09;场景中&#xff0c;结合 DDS&#xff08;Data Distribution Service&#xff09; 和 Rx&#xff08;Reactive Extensions&#xff09; 技术&#xff0c;实现 …...