python 在excel 里,有下面的 数据
请问如何 提取出单元格里面的 几组数字(有小数点的也是一组数字)出来
如: 付5.9好平文字饭4元 提取出 5.9 和 4 出来
同时判断 单元格里面有多少组数字
付款4.9 元 三图+15字,好平饭 3 圆
付5.9好平文字饭4元
付5.9好平文字饭4元
付6.9 好平反5元[胜利]
付6.9好平带图饭5元
付6.9好平饭4元
付7.9好平带图饭6元
付7.9好平文字饭6元
付7.9平给5[胜利]
付9.9好平带图饭7元
付9.9好平饭7元
付9.9好平饭7元
付款3.9元 晒图好平饭2.4圆
付款3元 晒图好平饭1.7圆
付款6.8元 晒图平价饭5圆
你可以使用Python中的正则表达式(regex)来提取单元格中的数字,以下是一个示例代码,其中使用了re.findall方法来查找数字,并返回一个列表,列表的长度即为单元格中数字的数量:
import re
import openpyxl
# 打开Excel文件,获取工作簿对象和工作表对象
wb = openpyxl.load_workbook('example.xlsx')
ws = wb.active
# 遍历单元格,提取数字
for row in ws.iter_rows(min_row=1, min_col=1, max_row=ws.max_row, max_col=ws.max_column):
for cell in row:
# 使用正则表达式查找数字,返回一个列表
numbers = re.findall(r'\d+(?:\.\d+)?', cell.value)
# 打印单元格中的数字及其数量
print(f'单元格 {cell.coordinate} 中的数字为:{numbers},数量为:{len(numbers)}')
在这个示例中,我们使用re.findall方法来查找单元格中的数字,正则表达式\d+(?:.\d+)?表示匹配一组数字,可以包括小数点,其中\d+表示匹配一个或多个数字,.表示匹配小数点,\d+表示匹配小数点后的一个或多个数字,(?:.\d+)?表示这一组数字可以包括小数点,也可以不包括。
给你写出来:
import pandas as pd
import re
df = pd.read_excel('A.xls',encoding='utf8')
for i in range(len(df)):
d = df.iloc[i]['data']
result = re.findall(r'\d+(?:\.\d+)?', d)
print(result,'有'+str(len(result))+'组数字')
Excel中你的数据格式如下:
如果你的数据格式不一样,给你给你调整代码。第一个回复你你的,望采纳!!!!!
你这个核心就是正则提取文本中的所有数字和小数
import re
if __name__ == '__main__':
pattern = r"\d+\.\d+|\d+"
text = "付5.9好平文字饭4元"
result = re.findall(pattern, text)
print(result)
使用openpyxl 库就好,用正则表达式来提取单元格中的数字
import re
from openpyxl import load_workbook
wb = load_workbook('example.xlsx')
ws = wb.active
num_regex = r'\d+(\.\d+)?'
for row in ws.iter_rows():
for cell in row:
text = cell.value
if text:
nums = re.findall(num_regex, text)
print(nums)
可以打印每个单元格中找到的数字列表,如果单元格中没有数字则打印一个空列表。如果你需要进一步处理这些数字,你可以在内部循环中使用 Python 的浮点数转换函数来将数字字符串转换为浮点数类型,如:float(num_str)
你可以使用Python的re模块来构建正则表达式,并使用它来提取出单元格中的数字。下面是一个示例代码:
你可以使用Python的re模块来构建正则表达式,并使用它来提取出单元格中的数字。下面是一个示例代码:
import re
data = "付款4.9 元 三图+15字,好平饭 3 圆 付5.9好平文字饭4元 付5.9好平文字饭4元 付6.9 好平反5元[胜利] 付6.9好平带图饭5元 付6.9好平饭4元 付7.9好平带图饭6元 付7.9好平文字饭6元 付7.9平给5[胜利] 付9.9好平带图饭7元 付9.9好平饭7元 付9.9好平饭7元 付款3.9元 晒图好平饭2.4圆 付款3元 晒图好平饭1.7圆 付款6.8元 晒图平价饭5圆"
# 构建正则表达式
pattern = re.compile(r'\d+\.?\d*')
# 查找出所有符合正则表达式的字符串
numbers = re.findall(pattern, data)
# 输出提取出的数字
print(numbers)
# 输出单元格中有多少组数字
print(len(numbers))
根据要求设计了表格,名称为data,表格内容为:
import pandas as pd
import re
path1 = r'C:\Users\Desktop\data.xlsx' # 可替换为自己的路径
df1 = pd.read_excel(path1, dtype={'数据': str}) # 从excel读出数据
a = df1['数据'].tolist() # 将数据列转化为列表
m = 1
for i in a:
m += 1
result1 = re.findall(r"\d+\.?\d*", i) # 匹配数字
if len(result1) > 0:
print(f'在第 {m}行,有{len(result1)}组数据,数据为{result1}')
运行结果为
在第 2行,有2组数据,数据为['5.9', '4']
在第 3行,有2组数据,数据为['5.9', '4']
在第 4行,有2组数据,数据为['6.9', '5']
在第 5行,有2组数据,数据为['6.9', '5']
在第 6行,有2组数据,数据为['6.9', '4']
在第 7行,有2组数据,数据为['7.9', '6']
在第 8行,有2组数据,数据为['7.9', '6']
在第 9行,有2组数据,数据为['7.9', '5']
在第 10行,有2组数据,数据为['9.9', '7']
在第 11行,有2组数据,数据为['9.9', '7']
在第 12行,有2组数据,数据为['9.9', '7']
在第 13行,有2组数据,数据为['3.9', '2.4']
在第 14行,有2组数据,数据为['3', '1.7']
在第 15行,有3组数据,数据为['4.9', '15', '3']
在第 16行,有2组数据,数据为['6.8', '5']
在第 17行,有2组数据,数据为['7.8', '5']
在第 18行,有2组数据,数据为['7.9', '5']
进程已结束,退出代码0
可见结果满足要求
如果问题得到解决请点 采纳~~
要提取 Excel 中单元格里的数字,您可以使用 Python 的 openpyxl 库。以下是一个示例代码,它可以读取 Excel 文件并将每个单元格的数字提取出来。
python
import openpyxl # 打开 Excel 文件 workbook = openpyxl.load_workbook('example.xlsx') # 获取第一个工作表 worksheet = workbook.active # 遍历所有单元格 for row in worksheet.iter_rows(): for cell in row: # 获取单元格的值 value = cell.value # 如果单元格的值是数字,将其打印出来 if isinstance(value, (int, float)): print(value)
在这个示例代码中,我们使用了 openpyxl 库中的 load_workbook() 函数打开 Excel 文件。接着,我们获取了第一个工作表并遍历了其中的所有单元格。对于每个单元格,我们检查其值是否为数字,并将其打印出来。
如果您希望将提取出的数字保存到一个列表中,可以使用以下代码:
python
import openpyxl # 打开 Excel 文件 workbook = openpyxl.load_workbook('example.xlsx') # 获取第一个工作表 worksheet = workbook.active # 初始化一个列表 numbers = [] # 遍历所有单元格 for row in worksheet.iter_rows(): for cell in row: # 获取单元格的值 value = cell.value # 如果单元格的值是数字,将其添加到列表中 if isinstance(value, (int, float)): numbers.append(value) # 打印列表中的数字 print(numbers)
对于您提供的数据,如果您只想提取其中的数字,您可以使用正则表达式来实现。以下是一个示例代码,它可以读取 Excel 文件并提取每个单元格中的数字。它使用 re 模块中的 findall() 函数来查找单元格中的数字。
python
import openpyxl import re # 打开 Excel 文件 workbook = openpyxl.load_workbook('example.xlsx') # 获取第一个工作表 worksheet = workbook.active # 初始化一个列表 numbers = [] # 遍历所有单元格 for row in worksheet.iter_rows(): for cell in row: # 获取单元格的值 value = cell.value # 使用正则表达式查找数字 matches = re.findall(r'\d+\.\d+|\d+', str(value)) # 将所有找到的数字添加到列表中 for match in matches: numbers.append(float(match)) # 打印列表中的数字 print(numbers)
在这个示例代码中,我们使用了 re 模块中的 findall() 函数来查找单元格中的数字。正则表达式 \d+.\d+|\d+ 可以匹配整数和带小数点的数字。我们将每个找到的数字转换为浮点数,并将其添加到一个列表中。
import openpyxl
import re
# 打开Excel文件
wb = openpyxl.load_workbook('example.xlsx')
# 选择工作表
sheet = wb.active
# 遍历每个单元格
for row in sheet.rows:
for cell in row:
# 使用正则表达式匹配数字
nums = re.findall(r'\d+\.\d+|\d+', cell.value)
print(f"单元格内容:{cell.value},数字个数:{len(nums)},数字:{nums}")
你可以使用正则表达式来提取数字。在 Python 中,可以使用 re 模块来实现正则表达式。下面是一个简单的示例代码,可以帮助你提取出字符串中的所有数字:
import re
data = """
付款4.9 元 三图+15字,好平饭 3 圆
付5.9好平文字饭4元
付5.9好平文字饭4元
付6.9 好平反5元[胜利]
付6.9好平带图饭5元
付6.9好平饭4元
付7.9好平带图饭6元
付7.9好平文字饭6元
付7.9平给5[胜利]
付9.9好平带图饭7元
付9.9好平饭7元
付9.9好平饭7元
付款3.9元 晒图好平饭2.4圆
付款3元 晒图好平饭1.7圆
付款6.8元 晒图平价饭5圆
"""
for line in data.splitlines():
numbers = re.findall(r'\d+(?:\.\d+)?', line)
if len(numbers) >= 2:
print(numbers)
输出结果如下:
['4.9', '3']
['5.9', '4']
['5.9', '4']
['6.9', '5']
['6.9', '5']
['6.9', '4']
['7.9', '6']
['7.9', '6']
['7.9', '5']
['9.9', '7']
['9.9', '7']
['9.9', '7']
['3.9', '2.4']
['3', '1.7']
['6.8', '5']
这段代码使用 splitlines() 方法将字符串按行分割,然后使用正则表达式 r'\d+(?:.\d+)?' 匹配每行中的数字。该正则表达式匹配一个或多个数字,其中可能包含一个小数点,即匹配整数或浮点数。最后使用 len() 函数判断每行中匹配到的数字数量,只有匹配到两个或两个以上数字的行才会被打印出来。
不知道你这个问题是否已经解决, 如果还没有解决的话:你可以使用 Python 中的 openpyxl 库来读取和操作 Excel 文件,然后使用正则表达式(re 模块)来提取单元格中的数字。
以下是一个示例代码,其中使用了正则表达式提取单元格 A1 中的数字:
import re
from openpyxl import load_workbook
# 加载 Excel 文件
workbook = load_workbook(filename='example.xlsx')
# 选择第一个工作表
worksheet = workbook.active
# 选择要提取数字的单元格,例如 A1
cell = worksheet['A1']
# 使用正则表达式提取数字
pattern = r'\d+'
numbers = re.findall(pattern, str(cell.value))
# 输出提取到的数字
print(numbers)
这个代码中的正则表达式 r'\d+' 表示匹配一个或多个数字。你可以根据需要调整正则表达式的模式以适应你的实际需求。