Python文件操作(Excel、PDF、XML、Word)

news2024/11/13 12:25:57

        大家好,在现代数据驱动的世界中,对于数据的处理和管理是至关重要的。Python作为一种强大而灵活的编程语言,提供了丰富的工具和库来处理各种文件格式。本文将探讨Python中的文件操作,重点介绍如何使用Python处理Excel、PDF、XML和Word等常见文件格式,希望能给大家的工作带来一些帮助。

一、常规文件

        Python提供了丰富的文件操作功能,可以用于创建、读取、写入和管理文件。下面我将详细介绍Python中常见的文件操作:

1、打开文件(Open File):

        要操作文件,首先需要使用内置的open()函数打开文件。open()函数接受文件路径和打开模式作为参数,并返回一个文件对象,用于后续的读取或写入操作。

# 打开文件
file = open('example.txt', 'r')  # 以只读模式打开文件

2、读取文件内容(Read File):

        可以使用文件对象的read()方法来读取文件内容。您可以一次读取整个文件,也可以按行读取文件内容。

# 读取整个文件内容
content = file.read()

# 按行读取文件内容
for line in file:
    print(line)

3、写入文件内容(Write File):

        使用文件对象的write()方法将数据写入文件。在打开文件时,要确保使用写入模式('w'或'a')。

# 写入数据到文件
file = open('example.txt', 'w')  # 以写入模式打开文件
file.write('Hello, world!')

4、关闭文件(Close File):

        在完成对文件的操作后,需要使用文件对象的close()方法关闭文件。关闭文件可以释放资源并确保数据被正确写入磁盘。

# 关闭文件
file.close()

5、自动关闭文件(With Statement):

使用with语句可以在文件操作结束后自动关闭文件,不需要手动调用close()方法。

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

6、文件操作模式(File Modes):

open()函数支持多种文件操作模式,包括:

  • 'r':只读模式(默认),文件必须存在。
  • 'w':写入模式,如果文件存在则清空文件,如果文件不存在则创建新文件。
  • 'a':追加模式,如果文件存在则在文件末尾追加数据,如果文件不存在则创建新文件。

7、其他操作:

        除了上述基本操作外,Python还提供了其他文件操作功能,如文件重命名、删除文件等。您可以使用os模块和shutil模块来执行这些操作。

import os

# 文件重命名
os.rename('old.txt', 'new.txt')

# 删除文件
os.remove('example.txt')

        通过上述方法,您可以在Python中进行各种文件操作,包括读取、写入、关闭文件以及其他文件管理操作。记住在文件操作完成后关闭文件是一个良好的习惯,以避免资源泄露和数据丢失。

二、使用openpyxl操作Excel文件

openpyxl 是一个用于操作 Excel 文件的Python库,它可以读取、写入和修改 Excel 文件。

1、安装 openpyxl:

pip install openpyxl

2、打开 Excel 文件:

要操作 Excel 文件,首先需要打开它。使用 load_workbook() 函数打开一个现有的 Excel 文件:

from openpyxl import load_workbook

workbook = load_workbook('example.xlsx')

3、获取工作表:

打开 Excel 文件后,可以使用 active 属性获取默认的工作表,或者使用 get_sheet_by_name() 方法获取指定名称的工作表:

# 获取默认的工作表
sheet = workbook.active

# 获取指定名称的工作表
sheet = workbook.get_sheet_by_name('Sheet1')

4、读取单元格数据:

可以使用工作表对象的 cell() 方法或直接通过索引来访问单元格,并使用 value 属性获取单元格中的数据:

# 通过索引读取单元格数据
data = sheet['A1'].value

# 使用 cell() 方法读取单元格数据
data = sheet.cell(row=1, column=1).value

5、写入单元格数据:

可以使用 cell() 方法或直接通过索引来写入数据到单元格:

# 通过索引写入数据到单元格
sheet['A1'] = 'Hello, world!'

# 使用 cell() 方法写入数据到单元格
sheet.cell(row=1, column=1).value = 'Hello, world!'

6、合并单元格:

可以使用 merge_cells 方法将多个单元格合并成一个单元格。

from openpyxl import Workbook

# 创建一个新的工作簿和工作表
workbook = Workbook()
sheet = workbook.active

# 合并单元格
sheet.merge_cells('A1:B2')

7、设置单元格样式:

可以使用 FontPatternFill 等对象来设置单元格的字体、颜色、填充等样式。

from openpyxl.styles import Font, PatternFill

# 设置字体样式
font = Font(name='Arial', size=12, bold=True)

# 设置填充样式
fill = PatternFill(fill_type='solid', start_color='FF0000')

# 将样式应用到单元格
sheet['A1'].font = font
sheet['A1'].fill = fill

8、创建图表:

可以使用 openpyxl.chart 模块来创建各种类型的图表,并将其添加到工作表中。

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

# 创建一个新的工作簿和工作表
workbook = Workbook()
sheet = workbook.active

# 创建数据
data = [
    ['Category', 'Value'],
    ['A', 10],
    ['B', 20],
    ['C', 30]
]

# 将数据写入工作表
for row in data:
    sheet.append(row)

# 创建柱状图
chart = BarChart()
chart.title = 'Sample Chart'
chart.x_axis.title = 'Category'
chart.y_axis.title = 'Value'

# 设置图表数据范围
data = Reference(sheet, min_col=2, min_row=1, max_col=2, max_row=4)
categories = Reference(sheet, min_col=1, min_row=2, max_row=4)

# 添加数据和分类到图表
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)

# 将图表添加到工作表
sheet.add_chart(chart, 'E1')

9、拆分单元格:

openpyxl 中,拆分单元格的功能并不直接提供,但可以通过合并单元格的相反操作来实现拆分单元格的效果。

(1)先判断单元格是否是合并单元格:

可以通过检查单元格的 merged_cells 属性来确定一个单元格是否是合并单元格。

from openpyxl import load_workbook

# 打开 Excel 文件
workbook = load_workbook('example.xlsx')
sheet = workbook.active

# 检查单元格是否是合并单元格
is_merged = sheet.merged_cells.issuperset(sheet['A1':'B2'])

(2)如果是合并单元格,进行拆分:

如果确定某个单元格是合并单元格,可以使用 unmerge_cells() 方法来拆分单元格。

from openpyxl import load_workbook

# 打开 Excel 文件
workbook = load_workbook('example.xlsx')
sheet = workbook.active

# 拆分单元格
sheet.unmerge_cells('A1:B2')

10、保存 Excel 文件:

在完成对 Excel 文件的操作后,要记得保存文件,以确保修改生效:

workbook.save('example.xlsx')

11、示例:

下面是一个完整的示例

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
from openpyxl.styles import Font, PatternFill

# 创建一个新的工作簿
workbook = Workbook()

# 获取默认的工作表
sheet = workbook.active

# 写入数据到工作表
data = [
    ['Category', 'Value'],
    ['A', 10],
    ['B', 20],
    ['C', 30]
]

for row in data:
    sheet.append(row)

# 设置标题行字体样式
font = Font(bold=True)
for cell in sheet['1:1']:
    cell.font = font

# 设置填充样式
fill = PatternFill(fill_type='solid', start_color='FF0000')
for row in sheet.iter_rows(min_row=2, max_row=4, min_col=2, max_col=2):
    for cell in row:
        cell.fill = fill

# 创建柱状图
chart = BarChart()
chart.title = 'Sample Chart'
chart.x_axis.title = 'Category'
chart.y_axis.title = 'Value'

# 设置图表数据范围
data = Reference(sheet, min_col=2, min_row=1, max_col=2, max_row=4)
categories = Reference(sheet, min_col=1, min_row=2, max_row=4)

# 添加数据和分类到图表
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)

# 将图表添加到工作表
sheet.add_chart(chart, 'E1')

# 保存工作簿到文件
workbook.save('example.xlsx')

        首先,创建一个新的工作簿,并获取默认的工作表。然后,写入数据到工作表,并设置标题行的字体样式和数据单元格的填充样式。接下来,创建一个柱状图,并设置图表的标题和坐标轴标题。最后,将图表添加到工作表中,并保存工作簿到文件。

三、使用PyPDF2操作PDF文件

PyPDF2 是一个用于处理PDF文件的Python库,它可以实现对PDF文件的读取、写入和修改。

1、安装 PyPDF2:

pip install PyPDF2

2、读取 PDF 文件:

使用 PdfFileReader 类可以打开并读取一个 PDF 文件。

import PyPDF2

# 打开 PDF 文件
with open('example.pdf', 'rb') as file:
    reader = PyPDF2.PdfFileReader(file)

    # 获取 PDF 文档的总页数
    num_pages = reader.numPages

    # 读取每一页的内容
    for page_number in range(num_pages):
        page = reader.getPage(page_number)
        text = page.extractText()
        print(text)

3、写入 PDF 文件:

使用 PdfFileWriter 类可以创建一个新的 PDF 文件,并写入内容。

import PyPDF2

# 创建一个 PDF 写入对象
writer = PyPDF2.PdfFileWriter()

# 创建一个页面并添加内容
page = PyPDF2.PageObject()
page.mergePage(reader.getPage(0))  # 从现有 PDF 中获取页面内容
writer.addPage(page)

# 将写入的内容保存到新的 PDF 文件中
with open('new_pdf.pdf', 'wb') as file:
    writer.write(file)

4、注意事项:

  • PyPDF2 对于某些特殊格式的 PDF 文件可能无法正确解析或处理。如果遇到解析错误,可以尝试其他库,如 pdfplumber
  • 在写入 PDF 文件时,建议先确保所写入的内容格式正确,以免造成文件损坏。

5、示例:

import PyPDF2

# 打开 PDF 文件
with open('example.pdf', 'rb') as file:
    # 创建 PdfFileReader 对象
    reader = PyPDF2.PdfFileReader(file)

    # 获取 PDF 文档的总页数
    num_pages = reader.numPages

    # 读取每一页的内容
    for page_number in range(num_pages):
        # 获取页面对象
        page = reader.getPage(page_number)

        # 提取文本内容
        text = page.extractText()

        # 打印文本内容
        print(f'Page {page_number + 1}:')
        print(text)
        print()

        上述示例中,打开了一个名为 example.pdf 的PDF文件,并逐页读取其内容。对于每一页,它使用 getPage() 方法获取页面对象,然后使用 extractText() 方法提取页面的文本内容。最后,它打印出每一页的文本内容。

四、操作XML文件

        可以使用内置的xml模块来操作XML文件。这个模块提供了一种简单而有效的方式来解析和生成XML文档。

1、解析XML文件:

可以使用xml.etree.ElementTree模块的ElementTree类来解析XML文件。

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()

# 遍历XML文档
for child in root:
    print(child.tag, child.attrib)
    for subchild in child:
        print(subchild.tag, subchild.text)

2、创建XML文件:

使用ElementTree类来创建XML文档。

import xml.etree.ElementTree as ET

# 创建根元素
root = ET.Element('root')

# 创建子元素
child1 = ET.SubElement(root, 'child1')
child2 = ET.SubElement(root, 'child2')

# 设置子元素的文本内容
child1.text = 'This is child 1'
child2.text = 'This is child 2'

# 创建XML文档
tree = ET.ElementTree(root)

# 将XML文档保存到文件
tree.write('output.xml')

3、修改XML文件:

通过修改Element对象的属性和文本来修改XML文档。

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()

# 修改XML文档
for child in root:
    if child.tag == 'child1':
        child.text = 'Modified child 1'

# 将修改后的XML文档保存到文件
tree.write('modified.xml')

4、查找元素:

可以使用 find() 方法和 findall() 方法来查找XML文档中的元素。

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()

# 查找元素
element = root.find('child1')
elements = root.findall('child2')

5、添加属性:

使用 set() 方法来为元素添加属性。

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()

# 添加属性
element = root.find('child1')
element.set('attr', 'value')

6、删除元素:

使用 remove() 方法来删除元素。

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()

# 删除元素
element = root.find('child1')
root.remove(element)

7、迭代器:

使用 iter() 方法和 next() 函数来创建一个迭代器,用于按顺序访问XML文档中的所有元素。

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()

# 创建迭代器
iter = root.iter()
element = next(iter)

8、遍历父元素和子元素:

使用 iter() 方法和 iterfind() 方法来遍历父元素和子元素。

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()

# 遍历父元素
for parent in root.iter():
    for child in parent.iterfind('child'):
        print(child.tag)

9、示例:

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('books.xml')
root = tree.getroot()

# 遍历XML文档并打印书籍信息
for book in root.findall('book'):
    # 获取书籍的属性值
    book_id = book.attrib['id']

    # 获取书籍的子元素值
    title = book.find('title').text
    author = book.find('author').text
    price = book.find('price').text

    # 打印书籍信息
    print(f"Book ID: {book_id}")
    print(f"Title: {title}")
    print(f"Author: {author}")
    print(f"Price: {price}")
    print()

# 添加新书籍
new_book = ET.SubElement(root, 'book')
new_book.set('id', '4')

title = ET.SubElement(new_book, 'title')
title.text = 'Machine Learning Basics'

author = ET.SubElement(new_book, 'author')
author.text = 'Emily Brown'

price = ET.SubElement(new_book, 'price')
price.text = '59.99'

# 将修改后的XML文档保存到文件
tree.write('modified_books.xml')

        上面示例首先使用 ET.parse() 方法解析名为 books.xml 的 XML 文件,并获取根元素。然后,遍历根元素下的所有书籍元素,提取每本书籍的信息并打印出来。接着,添加了一本新书籍,并将修改后的 XML 文档保存到名为 modified_books.xml 的文件中。

五、使用python-docx操作Word文件

        可以使用第三方库python-docx来操作Word文档。这个库提供了一种简单而有效的方式来创建、读取和修改Word文档。

1、安装 python-docx:

pip install python-docx

2、创建新的Word文档:

可以使用 Document 类创建一个新的Word文档,并向其中添加内容。

from docx import Document

# 创建一个新的Word文档
doc = Document()

# 添加标题和段落到文档中
doc.add_heading('Document Title', level=1)
doc.add_paragraph('This is a paragraph.')

# 保存文档到文件
doc.save('example.docx')

3、打开并读取现有的Word文档:

使用 Document 类的 open() 方法打开现有的Word文档,并读取其中的内容。

from docx import Document

# 打开现有的Word文档
doc = Document('example.docx')

# 遍历文档中的段落并打印内容
for paragraph in doc.paragraphs:
    print(paragraph.text)

4、修改现有的Word文档:

读取现有的Word文档,修改其中的内容,并保存修改后的文档。

from docx import Document

# 打开现有的Word文档
doc = Document('example.docx')

# 修改文档中的内容
for paragraph in doc.paragraphs:
    paragraph.text = 'Modified paragraph.'

# 保存修改后的文档
doc.save('modified_example.docx')

5、添加表格:

可以使用 add_table() 方法来添加一个简单的表格到文档中,然后使用嵌套的循环为每个单元格设置内容。

from docx import Document

# 创建一个新的Word文档
doc = Document()

# 添加一个简单的表格到文档中
table = doc.add_table(rows=3, cols=3)

# 填充表格单元格的内容
for i in range(3):
    for j in range(3):
        table.cell(i, j).text = f'Cell {i+1}-{j+1}'

# 保存文档到文件
doc.save('table_example.docx')

6、设置表格样式:

使用表格对象的属性来设置表格的样式,例如边框、对齐方式、宽度等。

from docx import Document
from docx.shared import Pt
from docx.enum.table import WD_ALIGN_VERTICAL

# 创建一个新的Word文档
doc = Document()

# 添加一个简单的表格到文档中
table = doc.add_table(rows=3, cols=3)

# 设置表格样式
table.style = 'Table Grid'

# 设置表格列宽
for cell in table.columns[0].cells:
    cell.width = Pt(100)

# 设置表格的对齐方式
table.alignment = WD_ALIGN_VERTICAL.CENTER

# 填充表格单元格的内容
for i in range(3):
    for j in range(3):
        table.cell(i, j).text = f'Cell {i+1}-{j+1}'

# 保存文档到文件
doc.save('styled_table_example.docx')

7、示例:

from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

# 创建一个新的Word文档
doc = Document()

# 添加标题和段落到文档中
doc.add_heading('Document Title', level=1)
doc.add_paragraph('This is a paragraph.')

# 添加一个简单的表格到文档中
table = doc.add_table(rows=3, cols=3)

# 设置表格样式
table.style = 'Table Grid'

# 设置表格列宽
for cell in table.columns[0].cells:
    cell.width = Pt(100)

# 设置表格的对齐方式
table.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

# 填充表格单元格的内容
for i in range(3):
    for j in range(3):
        table.cell(i, j).text = f'Cell {i+1}-{j+1}'

# 保存文档到文件
doc.save('example.docx')

# 打开现有的Word文档并读取内容
doc = Document('example.docx')

# 遍历文档中的段落并打印内容
print("Contents of the document:")
for paragraph in doc.paragraphs:
    print(paragraph.text)
print()

# 修改文档中的内容
for paragraph in doc.paragraphs:
    if 'paragraph' in paragraph.text:
        paragraph.text = 'Modified paragraph.'

# 保存修改后的文档
doc.save('modified_example.docx')

# 打开现有的Word文档并读取修改后的内容
doc = Document('modified_example.docx')

# 遍历文档中的段落并打印修改后的内容
print("Modified contents of the document:")
for paragraph in doc.paragraphs:
    print(paragraph.text)

        这个示例首先创建了一个新的Word文档,添加了标题、段落和表格到文档中,并设置了表格的样式。然后,保存了创建好的文档到文件example.docx中。接着,打开了这个新创建的文档,读取了其中的内容,并将读取的内容打印出来。接着,修改了文档中包含'paragraph'的段落,并将修改后的文档保存到文件modified_example.docx中。最后,打开了修改后的文档,并打印出其中修改后的内容。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】python tkinter 计算器GUI版本(模仿windows计算器 源码)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

每日一题《leetcode--2816.翻倍以链表形式表示的数字》

https://leetcode.cn/problems/double-a-number-represented-as-a-linked-list/ 这里我们直接模拟翻倍后链表的数字,首先我们得先考虑链表的头结点的值是否大于4(*2后是否需要进位)。 处理完头结点后,就需要考虑其余结点。因为求的是链表中每个结点翻倍后…

这个开源的多模态模型无敌。。。

InternVL 由 OpenGVLab 开发,是一个开源的多模态对话模型,其性能接近商业化的 GPT-4V 模型。 GPT-4V 是 OpenAI 去年推出的多模态模型,使用它你可以分析所需的任何类型的图像并获取有关该图像的信息。 1. InternVL 开源模型 而今天的主角研究…

基于python实现的深度学习web多格式纠错系统

基于python实现的深度学习web多格式纠错系统 开发语言:Python 数据库:MySQL所用到的知识:Django框架工具:pycharm、Navicat、Maven 系统功能实现 用户登录 登录功能是本系统一个非常重要的功能,这极大的保护了系统的安全。登录…

跨平台之用VisualStudio开发APK嵌入OpenCV(一)

序 本篇是杂谈以及准备工作(此处应无掌声) 暂时不管iOS(因为开发hello world都要年费) 软件: Visual Studio 2019(含Android SDK和NDK编译器等) OpenCV 这是一个女仆级的系列文章&#xf…

php之sql代码审计

1 SQL注入代码审计流程 1.1 反向查找流程 通过可控变量(输入点)回溯危险函数 查找危险函数确定可控变量 传递的过程中触发漏洞 1.2 反向查找流程特点 暴力:全局搜索危险函数 简单:无需过多理解目标网站功能与架构 快速:适用于自动化代码审…

vue实现可拖拽移动悬浮球

封装悬浮球组件&#xff0c;文件名s-icons.vue <template><div ref"icons" class"icons-container" :style"{ left: left px, top: top px }"><slot></slot></div> </template> <script> export …

阿里云ubuntu 24 deb安装mysql5.7问题解决

阿里云最近有了ubuntu24&#xff0c;手欠直接选了24系统来试水&#xff0c;安装mysql这里遇到麻烦了 其它问题参考ubuntu22的即可&#xff0c;以下是3个新问题&#xff1a; 阿里云ubuntu 24 deb安装mysql5.7遇到的3个问题&#xff1a; 1&#xff09;libssl1.1 (&#xff1e; …

深度神经网络——什么是决策树?

决策树 决策树是一种强大的机器学习算法&#xff0c;它通过模拟人类决策过程来解决分类和回归问题。这种算法的核心在于它如何将数据集细分&#xff0c;直至每个子集足够“纯净”&#xff0c;即包含的实例都属于同一类别或具有相似的数值范围。 开始于根节点&#xff1a;决策…

分布式事务——9种解决方案的原理与分类

目录 一、概要1. 分布式事务的概念2. 分布式事务解决方案分类 二、常见的分布式事务解决方案1. 基础的 2PC&#xff08;二阶段提交&#xff09;1.1 核心思想1.2 简介1.3 主要特点1.3.1 优点1.3.2 缺点 2. 基础的 3PC&#xff08;三阶段提交&#xff09;2.1 核心思想2.2 简介2.3…

【MySQL索引】(重点)

文章目录 一、见见索引二、认识磁盘三、索引的学习1.建立共识2.重谈page3.单page和多page同样存在效率低下的问题单page的缺陷多page的缺陷 页目录单page多page B树为什么行&#xff01;详谈细节 其他数据结构为什么不行?聚簇索引和非聚簇索引 回表查询 四、索引的操作1.创建主…

简单好用的文本识别方法--付费的好用,免费的更有性价比

文章目录 先说付费的进入真题&#xff0c;免费的来喏&#xff01;PixPin微信 先说付费的 直达网址!!! 进入真题&#xff0c;免费的来喏&#xff01; PixPin 商店里就有 使用示例&#xff1a; 可以看到&#xff1a;贴在桌面上的图片可以复制图片中的文字&#xff0c;真的很…

详细分析ping的基本知识以及常见网络故障的诊断(图文解析)

目录 前言1. 基本知识2. 常见故障分析2.1 请求超时2.2 域名无法解析 前言 由于全栈开发&#xff0c;在运维过程中难免会出现无法ping通等故障 针对多种情况进行详细分析 1. 基本知识 为了更好的加深ping的基本命令以及拓展更多知识点&#xff0c;详细科普其基本知识 ping&…

算法与数据结构汇总

刷题建议步骤 求职硬通货&#xff1a;一&#xff0c;好的学历&#xff0c;这个要下血本。本科&#xff0c;可以考研&#xff0c;读研。专科&#xff0c;可以专升本&#xff0c;再考研&#xff0c;读研&#xff0c;二&#xff0c;软考&#xff0c;一年考两次&#xff0c;有些科…

【Flutter】AppBar、TabBar和TabBarView

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Flutter学习 &#x1f320; 首发时间&#xff1a;2024年5月26日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 目…

到底该用英文括号还是中文括号?

这篇博客写的还挺详细的&#xff0c;不错。

最重要的时间表示,柯桥外贸俄语小班课

в第四格 1、与表示“钟点”的数词词组连用 例&#xff1a; в шесть часов утра 在早上六点 в пять тридцать 在五点半 2、与表示“星期”的名词连用 例&#xff1a; в пятницу 在周五 в следующий понедельник …

使用printf的两种方法,解决printf不能使用的问题

使用printf的两种方法&#xff0c;解决printf不能使用的问题 一、微库法 我们使用printf前要加上重定向fputc //重定义fputc函数 int fputc(int ch, FILE *f) { while((USART1->SR&0X40)0);//循环发送,直到发送完毕 USART1->DR (uint8_t) ch; return…

数字图像处理冈塞雷斯第四版课后习题答案【英文原版】

第二章 第三章 . 第四章 傅里叶变换是一个线性过程&#xff0c;而计算梯度的平方根和平方根则是非线性运算。傅里叶变换可以用来计算微分的差值(如问题4.50)&#xff0c;但必须在空间域中直接计算平方和平方根值。 (a)实际上&#xff0c;由于高通操作&#xff0c;环有一个暗中心…