鱼C论坛

 找回密码
 立即注册
查看: 919|回复: 6

[已解决]excel文件,提取符号要求的词

[复制链接]
发表于 2023-9-3 13:19:38 | 显示全部楼层 |阅读模式
10鱼币
各位大佬们好,请帮忙处理一下:如下的要求,写的有点多,不过原理很简单,谢谢。

我上传了“1.简明蒙古语词典_任务1最终版 - 副本.xlsx”文件,进行数据处理任务。该文件里包含了“序号”、“词条”、"西里尔蒙古文"、“释义”等四个字段的多行数据。

!处理需求!:

要从释义字段的信息中提取【】符号内的词条和其对应的释义信息,并按照源文件的排序,新创建一行写入。这种提取的信息里不包含"西里尔蒙古文"数据,因此,新创建一行写入时,"西里尔蒙古文"字段的信息为空。

从“释义”字段中提取时需要做几个判断。

!判断内容如下!:

1.当一个释义内容里只有一个【】符号内的词条时,提取的“词条”是【】符号内的词条;提取的该词条的释义内容是,该词条后面内容中的,最后一个“᠃”符号的前部分文本信息。

例如: 源文件中完整的一行数据:词条:ᠠᠢ、西里尔蒙古文:айⅢ、释义内容:ᠲᠤᠭᠠᠠ ᠦ ᠤᠢᠭᠡ ᠲᠡᠢ ᠬᠤᠷᠰᠢᠵᠦ ᠤᠯᠡᠠ ᠦ ᠰᠢᠡᠵᠢ ᠤᠤᠡᠬ᠎ᠠ ᠵᠢ ᠨᠡᠮᠡᠬᠦ᠃ 【ᠠᠢ ᠲᠤᠢᠮᠡᠠ】 ᠲᠤᠢᠭ ᠲᠤᠢᠮᠡᠠ᠂ ᠤᠢᠢ ᠲᠤᠢᠮᠡᠠ᠄ ᠠᠷᠦ ᠪᠡᠷ ᠲᠤᠢᠬᠦᠷᠡᠡᠭ ᠠᠢ ᠲᠤᠢᠮᠡᠠ ᠠᠳᠦᠭᠤ᠃

代码应该提取出:词条:ᠠᠢ ᠲᠤᠢᠮᠡᠠ、西里尔蒙古文:、释义:ᠲᠤᠢᠭ ᠲᠤᠢᠮᠡᠠ᠂ ᠤᠢᠢ ᠲᠤᠢᠮᠡᠠ᠄ ᠠᠷᠦ ᠪᠡᠷ ᠲᠤᠢᠬᠦᠷᠡᠡᠭ ᠠᠢ ᠲᠤᠢᠮᠡᠠ ᠠᠳᠦᠭᠤ᠃

而原本的: 词条:ᠠᠢ、西里尔蒙古文:айⅢ、释义内容:ᠲᠤᠭᠠᠠ ᠦ ᠤᠢᠭᠡ ᠲᠡᠢ ᠬᠤᠷᠰᠢᠵᠦ ᠤᠯᠡᠠ ᠦ ᠰᠢᠡᠵᠢ ᠤᠤᠡᠬ᠎ᠠ ᠵᠢ ᠨᠡᠮᠡᠬᠦ᠃ 内容,需要保留在原处。不可以删除。不要打乱排序。

2.当释义内容里有多个【】符号的词条时,提取的“词条”是【】符号内的词条;提取的该词条的释义内容是该词条后面另一个【】符号内的词条,前面的文本内容。

3.一个包含多个【】符号的词条的释义内容中,最后一个【】符号的词条的释义是,该词条后面最后一个"᠃ "符号前的文本内容。

例如:源文件中完整的一行数据: 词条: ᠠ、西里尔蒙古文:а Ⅰ、释义:① ᠠ ᠤᠢᠰᠦᠭ᠂ ᠠ ᠠᠪᠢᠶ᠎ᠠ᠄ ᠠ ᠤᠢᠰᠦᠭ ᠡᠷᠳᠡᠮ ᠤᠨ ᠲᠡᠭᠡᠵᠢ᠂ ᠠᠶᠡᠭ᠎ᠠ ᠴᠡᠢ ᠢᠳᠡᠭᠡᠠ ᠦ ᠲᠡᠭᠡᠵᠢ (ᠵᠤᠢᠢᠷ)᠃ ② ᠤᠢᠰᠦᠭ ᠵᠢᠡᠷ ᠳ᠋ᠤᠭᠠᠷᠯᠡᠬᠤ ᠳ᠋ᠦ ᠨᠢᠭᠡ ᠭᠡᠰᠡᠠ ᠤᠤᠡᠬ᠎ᠠ᠄ ᠠᠷᠪᠡᠳᠦᠭᠠᠷ ᠵᠤᠢᠢᠯ ᠤᠨ ᠠ ᠳ᠋ᠤᠭᠠᠷ ᠲᠦ ᠲᠤᠷᠡᠳᠦᠬᠰᠡᠠ ᠨᠢ; ᠲᠡᠪᠦᠳᠦᠭᠠᠷ ᠠᠡᠭᠬᠢ ᠵᠢᠠ〈ᠠ〉ᠪᠦᠯᠦᠭ᠃ 【☆ ᠠ ᠮᠠ ᠤᠢᠭᠡᠢ】 Аᠪᠢᠴᠢᠭ ᠤᠢᠰᠦᠭ ᠤᠢᠯᠦ ᠮᠡᠳᠡᠬᠦ᠃ Б ᠶᠡᠷᠢᠶ᠎ᠠ ᠬᠦᠷ ᠤᠢᠭᠡᠢ᠂ ᠶᠡᠷᠢᠶ᠎ᠠ ᠮᠡᠭᠤᠳᠡᠢ᠃ В ᠭᠡᠯᠠ ᠤᠢᠭᠡᠢ᠃ 【ᠠ ᠡ ᠤᠢᠭᠡᠢ】A ᠪᠢᠴᠢᠭ ᠤᠢᠰᠦᠭ ᠤᠬᠳᠦ ᠮᠡᠳᠡᠬᠦ ᠤᠢᠭᠡᠢ᠃ Б ᠶᠡᠷᠢᠶ᠎ᠠ ᠬᠦᠷ ᠤᠢᠭᠡᠢ᠂ ᠲᠤᠭᠤᠢ᠃ В ᠭᠡᠯᠠ ᠤᠢᠭᠡᠢ ᠲᠤᠢᠯᠡᠢ᠃ Г ᠠᠳᠡᠷᠡᠮ᠎ᠠ ᠤᠢᠭᠡᠢ᠂ ᠬᠦᠡᠳᠦᠦ ᠤᠢᠭᠡᠢ᠂ ᠲᠤᠮᠦᠭᠠᠳᠡᠢ᠃

代码应该提取出并创建:词条:☆ ᠠ ᠮᠠ ᠤᠢᠭᠡ、西里尔蒙古文:、释义: Аᠪᠢᠴᠢᠭ ᠤᠢᠰᠦᠭ ᠤᠢᠯᠦ ᠮᠡᠳᠡᠬᠦ᠃ Б ᠶᠡᠷᠢᠶ᠎ᠠ ᠬᠦᠷ ᠤᠢᠭᠡᠢ᠂ ᠶᠡᠷᠢᠶ᠎ᠠ ᠮᠡᠭᠤᠳᠡᠢ᠃ В ᠭᠡᠯᠠ ᠤᠢᠭᠡᠢ᠃
词条:ᠠ ᠡ ᠤᠢᠭᠡᠢ、西里尔蒙古文:、释义:A ᠪᠢᠴᠢᠭ ᠤᠢᠰᠦᠭ ᠤᠬᠳᠦ ᠮᠡᠳᠡᠬᠦ ᠤᠢᠭᠡᠢ᠃ Б ᠶᠡᠷᠢᠶ᠎ᠠ ᠬᠦᠷ ᠤᠢᠭᠡᠢ᠂ ᠲᠤᠭᠤᠢ᠃ В ᠭᠡᠯᠠ ᠤᠢᠭᠡᠢ ᠲᠤᠢᠯᠡᠢ᠃ Г ᠠᠳᠡᠷᠡᠮ᠎ᠠ ᠤᠢᠭᠡᠢ᠂ ᠬᠦᠡᠳᠦᠦ ᠤᠢᠭᠡᠢ᠂ ᠲᠤᠮᠦᠭᠠᠳᠡᠢ᠃两行新数据。
而原本的 词条: ᠠ、西里尔蒙古文:а Ⅰ、释义:① ᠠ ᠤᠢᠰᠦᠭ᠂ ᠠ ᠠᠪᠢᠶ᠎ᠠ᠄ ᠠ ᠤᠢᠰᠦᠭ ᠡᠷᠳᠡᠮ ᠤᠨ ᠲᠡᠭᠡᠵᠢ᠂ ᠠᠶᠡᠭ᠎ᠠ ᠴᠡᠢ ᠢᠳᠡᠭᠡᠠ ᠦ ᠲᠡᠭᠡᠵᠢ (ᠵᠤᠢᠢᠷ)᠃ ② ᠤᠢᠰᠦᠭ ᠵᠢᠡᠷ ᠳ᠋ᠤᠭᠠᠷᠯᠡᠬᠤ ᠳ᠋ᠦ ᠨᠢᠭᠡ ᠭᠡᠰᠡᠠ ᠤᠤᠡᠬ᠎ᠠ᠄ ᠠᠷᠪᠡᠳᠦᠭᠠᠷ ᠵᠤᠢᠢᠯ ᠤᠨ ᠠ ᠳ᠋ᠤᠭᠠᠷ ᠲᠦ ᠲᠤᠷᠡᠳᠦᠬᠰᠡᠠ ᠨᠢ; ᠲᠡᠪᠦᠳᠦᠭᠠᠷ ᠠᠡᠭᠬᠢ ᠵᠢᠠ〈ᠠ〉ᠪᠦᠯᠦᠭ᠃ 保留。

希望大佬练个手,写一下代码,谢谢。

发现excel不能上传,我将其转换成了.txt,每一个字段内容以@#符号隔开。请您用exce打开.txt并处理一下,谢谢。

1.简明蒙古语词典_任务1最终版 - 副本.txt (895.3 KB, 下载次数: 2)
最佳答案
2023-9-3 13:19:39
你好!根据你的需求,你可以使用Python编写代码来处理这个问题。下面是一个示例代码:
import pandas as pd

# 读取txt文件并分割字段
data = pd.read_csv("1.简明蒙古语词典_任务1最终版 - 副本.txt", sep="@#", engine="python")

# 定义函数用于提取词条和释义信息
def extract_info(row):
    meaning = row["释义"]
    if "【" in meaning:
        if "】" in meaning:
            start_pos = meaning.index("【")
            end_pos = meaning.index("】")
            word = meaning[start_pos+1:end_pos]
            if "】" in meaning[end_pos+1:]:
                next_start = meaning[end_pos+1:].index("【")
                next_end = meaning[end_pos+1:].index("】")
                if next_start < next_end:
                    next_word = meaning[end_pos+1:][next_start+1:next_end]
                    meaning = meaning[:start_pos] + next_word + meaning[end_pos+1:][next_end+1:]
                else:
                    meaning = meaning[:start_pos]
            else:
                meaning = meaning[:start_pos]
        else:
            word = meaning[meaning.index("【")+1:]
            meaning = ""
    else:
        word = ""
    
    # 创建新的行
    new_row = {
        "序号": row["序号"],
        "词条": word,
        "西里尔蒙古文": "",
        "释义": meaning
    }
    
    return new_row

# 处理每一行数据
new_data = []
for index, row in data.iterrows():
    extracted_row = extract_info(row)
    new_data.append(row.tolist())
    new_data.append(extracted_row)

# 将新数据转换为DataFrame并保存为Excel文件
new_data = pd.DataFrame(new_data, columns=data.columns)
new_data.to_excel("提取后的数据.xlsx", index=False)

请确保你已经安装了pandas库和openpyxl库(用于读写Excel文件)。将txt文件命名为"1.简明蒙古语词典_任务1最终版 - 副本.txt",然后运行上述代码,它将生成一个名为"提取后的数据.xlsx"的Excel文件,其中包含提取后的数据。

希望对你有帮助!如果有任何问题,请随时向我提问。
如果问题已经解决,请设置最佳答案

最佳答案

查看完整内容

你好!根据你的需求,你可以使用Python编写代码来处理这个问题。下面是一个示例代码: 请确保你已经安装了pandas库和openpyxl库(用于读写Excel文件)。将txt文件命名为"1.简明蒙古语词典_任务1最终版 - 副本.txt",然后运行上述代码,它将生成一个名为"提取后的数据.xlsx"的Excel文件,其中包含提取后的数据。 希望对你有帮助!如果有任何问题,请随时向我提问。 如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-3 13:19:39 | 显示全部楼层    本楼为最佳答案   
你好!根据你的需求,你可以使用Python编写代码来处理这个问题。下面是一个示例代码:
import pandas as pd

# 读取txt文件并分割字段
data = pd.read_csv("1.简明蒙古语词典_任务1最终版 - 副本.txt", sep="@#", engine="python")

# 定义函数用于提取词条和释义信息
def extract_info(row):
    meaning = row["释义"]
    if "【" in meaning:
        if "】" in meaning:
            start_pos = meaning.index("【")
            end_pos = meaning.index("】")
            word = meaning[start_pos+1:end_pos]
            if "】" in meaning[end_pos+1:]:
                next_start = meaning[end_pos+1:].index("【")
                next_end = meaning[end_pos+1:].index("】")
                if next_start < next_end:
                    next_word = meaning[end_pos+1:][next_start+1:next_end]
                    meaning = meaning[:start_pos] + next_word + meaning[end_pos+1:][next_end+1:]
                else:
                    meaning = meaning[:start_pos]
            else:
                meaning = meaning[:start_pos]
        else:
            word = meaning[meaning.index("【")+1:]
            meaning = ""
    else:
        word = ""
    
    # 创建新的行
    new_row = {
        "序号": row["序号"],
        "词条": word,
        "西里尔蒙古文": "",
        "释义": meaning
    }
    
    return new_row

# 处理每一行数据
new_data = []
for index, row in data.iterrows():
    extracted_row = extract_info(row)
    new_data.append(row.tolist())
    new_data.append(extracted_row)

# 将新数据转换为DataFrame并保存为Excel文件
new_data = pd.DataFrame(new_data, columns=data.columns)
new_data.to_excel("提取后的数据.xlsx", index=False)

请确保你已经安装了pandas库和openpyxl库(用于读写Excel文件)。将txt文件命名为"1.简明蒙古语词典_任务1最终版 - 副本.txt",然后运行上述代码,它将生成一个名为"提取后的数据.xlsx"的Excel文件,其中包含提取后的数据。

希望对你有帮助!如果有任何问题,请随时向我提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-3 13:19:51 | 显示全部楼层
你好,以下是我提供的解决方案:

```python
import pandas as pd

# 读取txt文件
data = pd.read_csv('1.简明蒙古语词典_任务1最终版 - 副本.txt', sep='@#', engine='python')

# 创建新的DataFrame用于存储提取的数据
new_data = pd.DataFrame(columns=['词条', '西里尔蒙古文', '释义'])

# 遍历每一行数据
for index, row in data.iterrows():
    # 获取释义字段的内容
    definition = row['释义']
   
    # 判断是否包含【】符号
    if '【' in definition and '】' in definition:
        # 提取词条和释义
        start_index = definition.index('【') + 1
        end_index = definition.index('】')
        term = definition[start_index:end_index]
        meaning = definition[end_index + 1:]
        
        # 判断释义

点评

没写完  发表于 2023-9-3 13:20
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-9-3 13:25:01 | 显示全部楼层
完了,返现编码不能识别。大家请看这个。

各位大佬们好,请帮忙处理一下:如下的要求,写的有点多,不过原理很简单,谢谢。

我上传了“1.简明蒙古语词典_任务1最终版 - 副本.xlsx”文件,进行数据处理任务。该文件里包含了“序号”、“词条”、"西里尔蒙古文"、“释义”等四个字段的多行数据。

!处理需求!:



用图片形式补充了。请看下图。
无标题.png
无标题1.png


希望大佬练个手,写一下代码,谢谢。

发现excel不能上传,我将其转换成了.txt,每一个字段内容以@#符号隔开。请您用exce打开.txt并处理一下,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-3 17:10:47 | 显示全部楼层

此内容为ChatGPT回答,如果胡说八道,请不要理会
如果对你有帮助,请设置一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-9-3 20:10:17 | 显示全部楼层
陶远航 发表于 2023-9-3 13:19
你好!根据你的需求,你可以使用Python编写代码来处理这个问题。下面是一个示例代码:

谢谢您的帮助。不过,我刚刚发现代码有个小报错。请您跑一下看看。

还有,我不想让提取后的文件单独生成一个文件。我想让符合要求的那一行数据,按照源文件里的排序,生成在源文件里。换句话说,如果第一行数据中产生了符合要求的数据,那么将生成的那一行数据,创建在第二行,以此类推,感谢您。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 15:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表