在python3中从excel到word的数据传输

2024-05-17 18:39:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个脚本,允许我从输入的excel文件(保存为.csv格式,因为有人告诉我这样做),并将这些数据的选定部分写入word文档。在

这是一个脚本,为参与者的用餐选择创建个性化的送货单(这些选择被累计添加到输入电子表格中)。在

到目前为止,我已经创建了一个虚拟的输入电子表格,并保存了一个空白的虚拟输出word文件(虚拟.csv以及假人.txt分别为)。在

到目前为止,我编写的代码将电子表格读入终端,并使用一些格式对其进行整理。在

import csv
f = open("dummy.csv")
csv_f = csv.reader(f)
for row in csv_f:
    print('{:<15}  {:<15}  {:<20} {:<25}'.format(*row))

结果是这样的:(为了方便起见,虚拟膳食选择保持不变)

^{pr2}$

我的下一个挑战是以某种方式将这些数据写入参与者1111的word文件,另一个参与者2222的word文件,依此类推。我不希望脚本必须将这些行中的确切数据写入word文件,而是希望如果输入文件中的食物选择不同,这些行上的数据可以是什么。在

最好将餐食分成早餐、午餐/晚餐和零食。在

我可以稍后整理字体等,我只想现在的饭菜选择。 我还想让它说“7xfullenglish”,而不是“fullenglish,fullenglish,fullenglish等等”

感谢您的阅读,任何帮助都将不胜感激!在

基兰


Tags: 文件csv数据文档脚本格式参与者excel
1条回答
网友
1楼 · 发布于 2024-05-17 18:39:00

只是为了展示您使用pandas的示例性功能:

import pandas as pd

df = pd.read_csv('whereverfilemayroam/filename')

    Participant ID     Breakfasts Lunches/dinners   Snacks
0             1111   Full english         Risotto  Granola
1             1111   Full english         Risotto  Granola
2             1111   Full english         Risotto  Granola
3             1111   Full english         Risotto  Granola
4             1111   Full english         Risotto  Granola
5             1111   Full english         Risotto  Granola
6             1111   Full english         Risotto  Granola
7             1111           None         Risotto  Granola
8             1111           None         Risotto  Granola
9             1111           None         Risotto  Granola
10            1111           None         Risotto  Granola
11            1111           None         Risotto  Granola
12            1111           None         Risotto  Granola
13            1111           None         Risotto  Granola
14            2222  Avocado toast     Bean chilli    Apple
15            2222  Avocado toast     Bean chilli    Apple
16            2222  Avocado toast     Bean chilli    Apple
17            2222  Avocado toast     Bean chilli    Apple
18            2222  Avocado toast     Bean chilli    Apple
19            2222  Avocado toast     Bean chilli    Apple
20            2222  Avocado toast     Bean chilli    Apple
21            2222           None     Bean chilli    Apple
22            2222           None     Bean chilli    Apple
23            2222           None     Bean chilli    Apple
24            2222           None     Bean chilli    Apple
25            2222           None     Bean chilli    Apple
26            2222           None     Bean chilli    Apple
27            2222           None     Bean chilli    Apple

这是pandas数据帧中的文件,pandas中的标准容器,如果您愿意的话。现在你可以用它做大量的统计数据。。。只需在docs中挖掘一点
示例:

^{pr2}$

当然,您可以按参与者ID分开:

oneoneoneone = df[df['Participant ID'] == 1111]

oneoneoneone

    Participant ID    Breakfasts Lunches/dinners   Snacks
0             1111  Full english         Risotto  Granola
1             1111  Full english         Risotto  Granola
2             1111  Full english         Risotto  Granola
3             1111  Full english         Risotto  Granola
4             1111  Full english         Risotto  Granola
5             1111  Full english         Risotto  Granola
6             1111  Full english         Risotto  Granola
7             1111          None         Risotto  Granola
8             1111          None         Risotto  Granola
9             1111          None         Risotto  Granola
10            1111          None         Risotto  Granola
11            1111          None         Risotto  Granola
12            1111          None         Risotto  Granola
13            1111          None         Risotto  Granola


oneoneoneone.to_csv('target_file')

也许也是

twotwotwotwo.to_csv('another_target_file')

也可以迭代组,然后对每个组应用相同的操作。
e、 g.:

for name, group in df.groupby('Participant ID'):
    print(name)
    print(group.groupby('Breakfasts').Breakfasts.count().to_string())
    print(group.groupby('Lunches/dinners')['Lunches/dinners'].count().to_string())
    print(group.groupby('Snacks').Snacks.count().to_string(), '\n')

退货:

1111
Breakfasts
Full english    7
Lunches/dinners
Risotto    14
Snacks
Granola    14 

2222
Breakfasts
Avocado toast    7
Lunches/dinners
Bean chilli    14
Snacks
Apple    14 

相关问题 更多 >