深入Pandas:精通文本数据处理的20+技巧与应用实例【第68篇—python:文本数据处理】

文章目录

  • Pandas文本数据处理方法详解
    • 1. str/object类型转换
    • 2. 大小写转换
    • 3. 文本对齐
    • 4. 获取长度
    • 5. 出现次数
    • 6. 编码方向
    • 7. 字符串切片
    • 8. 字符串替换
    • 9. 字符串拆分
    • 10. 字符串连接
    • 11. 字符串匹配
    • 12. 去除空格
    • 13. 多条件过滤
    • 14. 字符串排序
    • 15. 字符串格式化
    • 16. 多列文本操作
    • 17. 文本数据的正则表达式
    • 18. 文本数据的映射
    • 19. 文本数据的分组统计
    • 20. 文本数据的合并
    • 21. 文本数据的向量化操作
    • 22. 自定义文本处理函数
    • 23. 缺失值处理
    • 24. 文本数据的分箱处理
    • 25. 文本数据的独热编码
  • 总结

Pandas文本数据处理方法详解

Pandas是Python中一款强大的数据分析库,提供了许多灵活的功能来处理和分析数据。在实际数据处理中,文本数据是常见的一种数据类型。本文将介绍Pandas中针对文本数据的处理方法,包括str/object类型转换、大小写转换、文本对齐、获取长度、出现次数、编码等方面的技术。

image-20240208143159716

1. str/object类型转换

在处理数据时,有时候我们需要将数据类型转换为str或object类型。可以使用.astype()方法来实现这一转换。

import pandas as pd

# 创建一个包含整数的DataFrame
data = {'Number': [1, 2, 3, 4]}
df = pd.DataFrame(data)

# 将整数列转换为字符串列
df['Number'] = df['Number'].astype(str)

print(df)

在上面的例子中,我们将DataFrame中的’Number’列从整数类型转换为字符串类型。这种转换在处理需要字符串格式的数据时非常有用。

image-20240208143433134

2. 大小写转换

Pandas提供了.str属性,可以方便地进行大小写转换操作。下面的例子演示了如何将文本列中的字母全部转换为大写。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple', 'banana', 'orange']}
df = pd.DataFrame(data)

# 将文本列转换为大写
df['Text'] = df['Text'].str.upper()

print(df)

使用.str.upper()方法可以将文本列中的字母全部转换为大写。类似地,.str.lower()可以将字母全部转换为小写。

image-20240208143451103

3. 文本对齐

有时候我们需要对文本进行对齐操作,以便更好地展示数据。使用.str.ljust().str.rjust().str.center()方法可以实现文本的左对齐、右对齐和居中对齐。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple', 'banana', 'orange']}
df = pd.DataFrame(data)

# 左对齐
df['Text_left'] = df['Text'].str.ljust(10)

# 右对齐
df['Text_right'] = df['Text'].str.rjust(10)

# 居中对齐
df['Text_center'] = df['Text'].str.center(10)

print(df)

通过上述代码,我们可以在DataFrame中创建新的列,分别展示文本的左对齐、右对齐和居中对齐效果。

image-20240208143511344

4. 获取长度

想要获取文本列中每个元素的长度,可以使用.str.len()方法。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple', 'banana', 'orange']}
df = pd.DataFrame(data)

# 获取文本列中每个元素的长度
df['Text_length'] = df['Text'].str.len()

print(df)

使用.str.len()可以方便地获取文本列中每个元素的长度,并将结果存储在新的列中。

5. 出现次数

要统计文本列中每个元素出现的次数,可以使用.value_counts()方法。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple', 'banana', 'orange', 'apple', 'banana']}
df = pd.DataFrame(data)

# 统计文本列中每个元素的出现次数
counts = df['Text'].value_counts()

print(counts)

上述代码将输出每个元素在文本列中的出现次数,方便我们进行频次统计分析。

6. 编码方向

在处理包含非英文字符的文本时,经常需要考虑文本的编码方向。Pandas提供了.str.encode().str.decode()方法来进行编码和解码操作。

# 创建一个包含非英文字符的DataFrame
data = {'Text': ['你好', 'こんにちは', '안녕하세요']}
df = pd.DataFrame(data)

# 将文本列进行编码和解码
df['Text_encoded'] = df['Text'].str.encode('utf-8')
df['Text_decoded'] = df['Text_encoded'].str.decode('utf-8')

print(df)

在上面的例子中,我们使用了utf-8编码对文本进行了编码和解码操作,确保文本数据在不同系统和环境中的正确显示。

通过本文介绍的Pandas文本数据处理方法,我们可以更灵活地处理和分析文本数据,使得数据分析工作更加高效。在实际应用中,根据具体需求选择合适的方法,可以更好地发挥Pandas在数据处理中的优势。

7. 字符串切片

Pandas的.str属性还提供了对字符串进行切片的功能,可以通过.str.slice()方法来实现。下面是一个示例,截取文本列中的部分字符。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple', 'banana', 'orange']}
df = pd.DataFrame(data)

# 对文本列进行切片
df['Text_slice'] = df['Text'].str.slice(1, 4)

print(df)

上述代码将截取文本列中每个元素的第1到第3个字符,并将结果存储在新的列中。

8. 字符串替换

使用.str.replace()方法可以方便地进行字符串的替换操作。下面的例子演示了如何将文本列中的某个子字符串替换为另一个字符串。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple pie', 'banana split', 'orange juice']}
df = pd.DataFrame(data)

# 将文本列中的子字符串替换为新字符串
df['Text_replace'] = df['Text'].str.replace('orange', 'grape')

print(df)

在上面的例子中,我们将文本列中包含’orange’的部分替换为’grape’,并将结果存储在新的列中。

9. 字符串拆分

如果我们需要将文本列中的字符串按照某个分隔符拆分成多个部分,可以使用.str.split()方法。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple,red', 'banana,yellow', 'orange,orange']}
df = pd.DataFrame(data)

# 按逗号拆分文本列
df[['Fruit', 'Color']] = df['Text'].str.split(',', expand=True)

print(df)

上述代码将按逗号拆分文本列,并将拆分后的结果存储在两个新的列中。

10. 字符串连接

使用.str.cat()方法可以将两个文本列连接成一个新的文本列。下面的例子演示了如何将两列文本连接起来。

# 创建包含两列文本的DataFrame
data = {'Text1': ['apple', 'banana', 'orange'],
        'Text2': ['pie', 'split', 'juice']}
df = pd.DataFrame(data)

# 将两列文本连接成新的文本列
df['Combined_Text'] = df['Text1'].str.cat(df['Text2'], sep=' ')

print(df)

在上面的例子中,我们将’Text1’列和’Text2’列连接成一个新的文本列,并使用空格作为连接的分隔符。

通过以上这些示例,我们详细了解了Pandas中处理文本数据的一些常用方法,涉及了类型转换、大小写转换、文本对齐、获取长度、出现次数、编码、字符串切片、字符串替换、字符串拆分和字符串连接等操作。这些功能使得Pandas成为数据处理和分析中强大而灵活的工具。在实际应用中,结合具体的数据情况,选择合适的方法将有助于更高效地完成数据处理任务。

11. 字符串匹配

Pandas提供了.str.contains()方法,用于检查文本列中是否包含某个子字符串。下面是一个简单的例子,检查文本列中是否包含特定关键词。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple', 'banana', 'orange']}
df = pd.DataFrame(data)

# 检查文本列是否包含关键词
df['Contains_Orange'] = df['Text'].str.contains('orange')

print(df)

上述代码将创建一个新的列,标记文本列中是否包含关键词’orange’。

12. 去除空格

在文本数据处理中,有时需要去除字符串两端或内部的空格。使用.str.strip().str.lstrip().str.rstrip()方法可以实现去除空格的操作。

# 创建一个包含有空格的文本DataFrame
data = {'Text': ['  apple  ', ' banana', 'orange  ']}
df = pd.DataFrame(data)

# 去除文本列两端的空格
df['Text_stripped'] = df['Text'].str.strip()

print(df)

上述代码将去除文本列两端的空格,并将结果存储在新的列中。

13. 多条件过滤

通过结合多个条件,可以实现对文本列的复杂过滤操作。下面的例子演示了如何筛选包含特定关键词的行。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple', 'banana', 'orange', 'grape']}
df = pd.DataFrame(data)

# 筛选包含关键词的行
filtered_df = df[df['Text'].str.contains('a') & df['Text'].str.contains('e')]

print(filtered_df)

上述代码将筛选出包含字母’a’和’e’的行。

image-20240208143527660

14. 字符串排序

使用.str.sort_values()方法可以对文本列进行排序,可以选择升序或降序排列。

# 创建一个包含文本的DataFrame
data = {'Text': ['banana', 'apple', 'orange', 'grape']}
df = pd.DataFrame(data)

# 对文本列进行升序排序
df_sorted = df.sort_values(by='Text')

print(df_sorted)

上述代码将按照文本列的字母顺序对DataFrame进行排序。

15. 字符串格式化

在处理文本数据时,有时候需要将文本按照一定格式进行输出。使用.str.format()方法可以实现字符串的格式化。

# 创建一个包含姓名和年龄的DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 22]}
df = pd.DataFrame(data)

# 格式化输出文本
df['Formatted_Text'] = df['Name'].str.cat(df['Age'].astype(str), sep=', Age: ')

print(df)

上述代码将姓名和年龄格式化输出,并将结果存储在新的列中。

通过这些进阶的文本处理技巧,我们能够更加灵活地应对各种实际场景中的文本数据处理需求。在进行数据分析和清洗时,熟练掌握这些方法将帮助我们更加高效地处理和利用文本数据。

16. 多列文本操作

在实际数据中,经常需要同时处理多列文本数据。Pandas提供了多列操作的灵活性,例如,可以使用.apply()方法来同时处理多列文本数据。

# 创建一个包含两列文本的DataFrame
data = {'Text1': ['apple', 'banana', 'orange'],
        'Text2': ['pie', 'split', 'juice']}
df = pd.DataFrame(data)

# 对两列文本同时进行操作
df['Combined_Text'] = df.apply(lambda row: row['Text1'] + ' ' + row['Text2'], axis=1)

print(df)

上述代码将创建一个新的列,将两列文本拼接起来。通过axis=1参数,我们告诉.apply()方法在行的方向上操作。

image-20240208143547351

17. 文本数据的正则表达式

Pandas的.str属性还支持正则表达式操作,可以使用.str.extract().str.findall()等方法进行高级的模式匹配。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple price: $2.5', 'banana price: $1.8', 'orange price: $3.2']}
df = pd.DataFrame(data)

# 使用正则表达式提取价格信息
df['Price'] = df['Text'].str.extract(r'\$([\d.]+)').astype(float)

print(df)

上述代码使用正则表达式提取文本列中的价格信息,并将结果存储在新的列中。

18. 文本数据的映射

有时候,我们需要根据一个映射关系对文本列的值进行替换。可以使用.str.replace()方法结合字典实现这一目标。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple', 'banana', 'orange']}
df = pd.DataFrame(data)

# 根据映射关系替换文本列的值
mapping = {'apple': 'fruit_A', 'banana': 'fruit_B', 'orange': 'fruit_C'}
df['Mapped_Text'] = df['Text'].replace(mapping)

print(df)

上述代码将根据映射关系将文本列的值替换为新的值。

19. 文本数据的分组统计

结合Pandas的分组统计功能,我们可以对文本列进行更加复杂的数据分析。下面是一个简单的例子,统计每个开头字母的数量。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple', 'banana', 'orange', 'grape', 'avocado']}
df = pd.DataFrame(data)

# 统计每个开头字母的数量
df['Initial_Count'] = df['Text'].str[0].groupby(df['Text'].str[0]).transform('count')

print(df)

上述代码使用了.groupby().transform()方法,统计了每个开头字母的数量,并将结果存储在新的列中。

20. 文本数据的合并

在处理多个包含文本数据的DataFrame时,可能需要将它们合并。使用Pandas的.merge()方法可以方便地实现这一操作。

# 创建两个包含文本的DataFrame
data1 = {'ID': [1, 2, 3], 'Text1': ['apple', 'banana', 'orange']}
data2 = {'ID': [1, 2, 4], 'Text2': ['pie', 'split', 'juice']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 合并两个DataFrame
merged_df = pd.merge(df1, df2, on='ID', how='outer')

print(merged_df)

上述代码将两个DataFrame按照共同的列’ID’进行合并。

通过这些高级的文本处理技巧,我们可以更好地处理多列文本数据,应对更加复杂的数据处理需求。结合Pandas强大的功能,我们能够更加灵活地进行文本数据的清洗、分析和整合,从而更好地支持数据科学和分析工作。

21. 文本数据的向量化操作

在处理大规模文本数据时,可以使用向量化操作提高性能。Pandas提供了.str属性下的一些向量化字符串方法,如.str.contains().str.startswith().str.endswith()等,能够高效处理大量文本数据。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple', 'banana', 'orange', 'grape']}
df = pd.DataFrame(data)

# 使用向量化操作检查文本列是否包含关键词
df['Contains_Apple'] = df['Text'].str.contains('apple')

print(df)

上述代码通过.str.contains()方法使用向量化操作检查文本列是否包含关键词,避免了逐行循环的性能问题。

22. 自定义文本处理函数

有时候,我们可能需要进行更复杂的文本处理,此时可以自定义文本处理函数,并使用.apply()方法将其应用到文本列上。

# 创建一个包含文本的DataFrame
data = {'Text': ['apple pie', 'banana split', 'orange juice']}
df = pd.DataFrame(data)

# 自定义文本处理函数
def custom_text_processing(text):
    return text.replace(' ', '_').upper()

# 应用自定义函数到文本列
df['Processed_Text'] = df['Text'].apply(custom_text_processing)

print(df)

上述代码定义了一个将空格替换为下划线并转为大写的自定义文本处理函数,并使用.apply()方法将其应用到文本列上。

23. 缺失值处理

在处理文本数据时,可能会遇到缺失值。可以使用.str.fillna()方法填充缺失值,或使用.dropna()方法删除包含缺失值的行。

# 创建一个包含文本和缺失值的DataFrame
data = {'Text': ['apple', 'banana', np.nan, 'grape']}
df = pd.DataFrame(data)

# 填充缺失值为默认文本
df['Text_filled'] = df['Text'].str.fillna('unknown')

# 删除包含缺失值的行
df_no_missing = df.dropna(subset=['Text'])

print(df)
print(df_no_missing)

上述代码使用.str.fillna()方法填充缺失值,并使用.dropna()方法删除包含缺失值的行。

24. 文本数据的分箱处理

有时候,我们需要将连续的文本数据分成不同的区间,可以使用.cut()方法进行分箱处理。

# 创建一个包含文本的DataFrame
data = {'Text': ['low', 'medium', 'high']}
df = pd.DataFrame(data)

# 定义分箱的边界和标签
bins = [-np.inf, 0, np.inf]
labels = ['negative', 'positive']

# 将文本列分箱处理
df['Text_binned'] = pd.cut(df['Text'].astype(float), bins=bins, labels=labels)

print(df)

上述代码使用.cut()方法将文本列分成负面和正面两个区间。

25. 文本数据的独热编码

对于包含分类信息的文本数据,可以使用独热编码进行处理,将其转换为数值形式。

# 创建一个包含文本的DataFrame
data = {'Category': ['A', 'B', 'C']}
df = pd.DataFrame(data)

# 使用独热编码处理文本列
df_encoded = pd.get_dummies(df['Category'], prefix='Category')

print(df_encoded)

上述代码使用pd.get_dummies()方法对文本列进行独热编码,得到数值形式的表示。

通过以上这些进阶的文本处理技巧,我们能够更灵活地应对各种实际场景中的文本数据处理需求。在进行数据分析和清洗时,结合这些方法将帮助我们更高效地处理和利用文本数据。

image-20240208143620336

总结

总体而言,本文深入探讨了Pandas在文本数据处理方面的丰富功能,通过20多个具体实例详细介绍了各种文本处理方法。以下是对本文的总结:

  1. 数据类型转换: 通过astype()方法,我们可以将文本数据转换为str或object类型,为后续处理提供了灵活性。

  2. 大小写转换: 使用.str.upper().str.lower()方法,可以方便地进行大小写转换,适应不同分析需求。

  3. 文本对齐: 通过.str.ljust().str.rjust().str.center()方法,实现了文本的左对齐、右对齐和居中对齐。

  4. 获取长度: 利用.str.len()方法,可以获取文本列中每个元素的长度,对于分析文本长度的场景十分有用。

  5. 出现次数: 使用.value_counts()方法,方便地统计文本列中每个元素的出现次数,支持频次分析。

  6. 编码方向: 通过.str.encode().str.decode()方法,实现了对文本的编码和解码,确保在不同环境中正确显示。

  7. 字符串切片、替换、拆分和连接: 利用.str.slice().str.replace().str.split().str.cat()等方法,实现了多种文本处理操作。

  8. 字符串格式化: 通过.str.format()方法,对文本进行了灵活的格式化输出。

  9. 字符串匹配: 使用.str.contains()方法进行字符串匹配,支持查找是否包含指定子字符串。

  10. 去除空格: 通过.str.strip().str.lstrip().str.rstrip()方法,完成了对文本两端或内部空格的处理。

  11. 多条件过滤、排序和合并: 结合.str.contains()等方法,实现了复杂的文本列过滤操作,同时通过.str.sort_values().merge()方法完成了排序和合并。

  12. 向量化操作: 使用.str属性下的向量化字符串方法,如.str.contains().str.startswith()等,高效处理了大量文本数据。

  13. 自定义文本处理函数: 利用.apply()方法,成功将自定义的文本处理函数应用到文本列上,实现了个性化的文本处理需求。

  14. 缺失值处理、分箱和独热编码: 使用.str.fillna().dropna()方法处理缺失值,通过.cut()进行文本数据分箱,以及使用pd.get_dummies()实现了文本数据的独热编码。

通过这些方法,我们能够更灵活、高效地处理各种文本数据,为数据分析和清洗提供了全面的解决方案。总的来说,Pandas在文本数据处理方面的丰富功能,使其成为数据科学领域不可或缺的强大工具。通过深入理解这些技巧,并在实际应用中灵活运用,能够让我们更好地发挥Pandas在数据处理中的优势,提升工作效率,更精准地进行数据分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/378837.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio安装过程遇到SDK无法安装问题解决

首次打开studio遇到该类问题,需要下载SDK文件,后又发现SDK由于是Google源,无法进行正常安装,故转而进行SDK的镜像安装。 一、下载SDK Tools 地址:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio…

c语言动态数组的实现

动态数组是在程序运行时动态分配内存空间的数组,可以根据需要随时改变大小。在C语言中,动态数组通常通过指针和malloc函数来实现。 使用malloc函数动态分配内存空间: int *arr; int size 10; arr (int*)malloc(size * sizeof(int));使用r…

【Java八股面试系列】并发编程-进程与线程

目录 进程 线程 线程和进程的区别 Java线程和操作系统的线程的区别 请简要描述一下进程和线程在Java中的关系,区别及优缺点?​编辑​编辑​编辑 并发和并行的区别 为什么要使用多线程? 线程的生命周期 什么是线程上下文切换? sleep() 方法和…

Java Stram 流对于返回对象的处理 (结束流)

Java Stram 流对于返回对象的处理 (结束流) package com.zhong.streamdemo.showdownstreamdemo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.util.*; import java.util.stream.Collectors; im…

Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES ①

📁 前情提要: Springboot 整合 Elasticsearch(一):Linux下安装 Elasticsearch 8.x Springboot 整合 Elasticsearch(二):使用HTTP请求来操作ES 目录 一、Springboot 整合 Elasticsea…

【FPGA】快速学习路径

FPGA学习教程、功利式学习路径、以找工作为目的,早日入门FPGA_哔哩哔哩_bilibili

Redis篇之集群

一、主从复制 1.实现主从作用 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。主节点用来写的操作,从节点用来读操作,并且主节点发生写操作后,会把数据同…

倒计时61天

M-智乃的36倍数(normal version)_2024牛客寒假算法基础集训营3 (nowcoder.com) //非ac代码,超时了,54.17/100#include<bits/stdc.h> using namespace std; const int N1e55; const int inf0x3f3f3f3f; #define int long long int n; string s1[N]; void solve() {cin>…

第五篇【传奇开心果系列】vant开发移动应用示例:深度解读高度可定制

传奇开心果博文系列 系列博文目录Vant 开发移动应用示例系列 博文目录前言一、Vant高度可定制的重要作用二、样式定制介绍和示例代码三、组件定制介绍和示例代码四、组件库定制介绍和示例代码五、主题定制介绍和示例代码六、语言环境定制介绍和示例代码七、资源加载定制介绍和示…

[当人工智能遇上安全] 11.威胁情报实体识别 (2)基于BiGRU-CRF的中文实体识别万字详解

您或许知道&#xff0c;作者后续分享网络安全的文章会越来越少。但如果您想学习人工智能和安全结合的应用&#xff0c;您就有福利了&#xff0c;作者将重新打造一个《当人工智能遇上安全》系列博客&#xff0c;详细介绍人工智能与安全相关的论文、实践&#xff0c;并分享各种案…

DMA直接内存访问,STM32实现高速数据传输使用配置

1、DMA运用场景 随着智能化、信息化的不断推进&#xff0c;嵌入式设备的数据处理量也呈现指数级增加&#xff0c;因此对于巨大的数据量处理的情况时&#xff0c;必须采取其它的方式去替CPU减负&#xff0c;以保证嵌入式设备性能。例如SD卡存储器和音视频、网络高速通信等其它情…

探讨CSDN等级制度:博客等级、原力等级、创作者等级

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…

数据结构:双向链表

文章目录 1. 双向带头循环链表的结构2. 相关操作2.1 创建节点2.2 尾插2.3 头插2.4 打印2.5 尾删2.6 头删2.7 查找2.8 指定位置前/后插入2.9 删除指定位置的节点2.10 删除指定位置后的节点2.11 销毁链表 3.顺序表与链表区别 1. 双向带头循环链表的结构 与单链表不同的是&#xf…

C#,奥西里斯数(Osiris Number)的算法与源代码

1 奥西里斯数(Osiris Number) 奥西里斯数(Osiris Number)是一个数字&#xff0c; 其值等于通过将其自身数字的所有排列相加而形成的所有数字的值之和。 计算结果&#xff1a; 2 源程序 using System; namespace Legalsoft.Truffer.Algorithm { /// <summary> /…

Django学习记录02

1.请求与响应 1.1get与post的区别 get 一般是从url输入地址&#xff0c;会调用get请求 post 一般是内部数据传输# get请求 def something(request):# req是一个对象&#xff0c;封装了用户发送过来的所有请求相关数据# 1.获取请求方式 http://localhost:8000/something# pri…

Ubuntu22.04 gnome-builder gnome C 应用程序习练笔记(二)

gnome-builder创建的程序&#xff0c;在工程树中有三个重要程序&#xff1a;main主程序、application应用程序和window主窗口程序。main整个程序的起始&#xff0c;它会操作application生产应用环境&#xff0c;application会操作window生成主窗口&#xff0c;于是就有了 appli…

【lesson47】进程通信之system V(共享内存)补充知识

文章目录 补充知识 补充知识 进行通信的key值问题&#xff0c;进程要通信的对方进程怎么能保证对方能看到&#xff0c;并且看到的就是该进程创建的共享内存的。 所以就通过key值来标识共享内存&#xff0c;key值是几不重要&#xff0c;只要在系统里是唯一的即可。 这样server和…

Java图形化界面编程——Container容器 笔记

2.3 Container容器 2.3.1 Container继承体系 Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;Panel可以容纳其他组件&#xff0c;但不能独立存在&#xff0c;它必须内嵌其他容器中使用&#xff0c;默认使用FlowLayout管理其内部组件布局&#xff1b;S…

2月8日作业

1、现有文件test.c\test1.c\main.c,编写Makkefile 代码&#xff1a; CCgcc EXEa.out OBJS$(patsubst %.c,%.o,$(wildcard *.c)) CFLAGS-c -oall:$(EXE)$(EXE):$(OBJS)$(CC) $^ -o $%.o:%.c$(CC) $(CFLAGS) $ $^.PHONY:cleanclean:rm $(OBJS) $(EXE)运行结果&#xff1a; 2、…

【网络】:序列化和反序列化

序列化和反序列化 一.json库 二.简单使用json库 前面已经讲过TCP和UDP&#xff0c;也写过代码能够进行双方的通信了&#xff0c;那么有没有可能这种通信是不安全的呢&#xff1f;如果直接通信&#xff0c;可能会被底层捕捉&#xff1b;可能由于网络问题&#xff0c;一方只接收到…