【问题标题】:Removing characters from docx file从 docx 文件中删除字符
【发布时间】:2018-09-26 19:15:31
【问题描述】:

我有一个非常大的 docx 文件(700 页),它有一个日志格式

[15/09/2014, 15:30:21] Stijn: Nice

我想把时间去掉,让它看起来像这样

[15/09/2014] Stijn: Nice

我很确定这可以在 python 中完成,但还没有找到确切的方法。 我应该使用这样的东西吗?

line.replace(char,'')

它是一个 whatsapp 日志文件,看起来像这样(一些文本使用 2 行)

[15/09/2014, 15:53:39] Dylan: Beste selfie ever 
[15/09/2014, 15:53:52] Sipke: Ja 
[15/09/2014, 15:54:05] ‎You changed this group's icon

感谢您的帮助:)

【问题讨论】:

  • 我不确定您的数据是如何设置的。如果方括号中的内容是一个单独的列表,则可以使用 .pop() 从每个列表中删除最后一项。
  • 我认为最快的方法是压缩打开 docx 并使用模式替换更改主 xml 文件。
  • .docx 文件以专有格式保存,不容易在 word 之外更改(尝试在记事本中打开以了解我的意思),使用 python 解析它们会遇到很多麻烦.有什么办法可以使用其他格式甚至 .txt 文件来代替?
  • @Njord .docxXML,因此是 x
  • 我的错,我尽量避免使用 .docx 之类的文件,也许这个包可以满足你的需求:github.com/python-openxml/python-docx

标签: python


【解决方案1】:

如果您知道如何使用正则表达式,这可以很容易地完成。你想:

1) 逐行读取文件

2) 用空白文本替换时间戳。

这是我为您准备的示例 Python 代码:

#!/usr/bin/python
import re

text = "[15/09/2014, 15:30:21] Stijn: Nice"

# Capture time stamp and substitute it with blank
new = re.sub(r'(, [0-9]{2}:[0-9]{2}:[0-9]{2})', "", text)    
print new

这将产生:

[15/09/2014] Stijn: Nice

如果你想摆弄/理解我在这里使用的正则表达式的用法,请点击此链接-https://regexr.com/406sc

【讨论】:

  • 哦还有@Barkork,(取决于您的数据)您将不得不修改正则表达式以确保它不会执行贪婪匹配。换句话说,如果一个订单项看起来像:[15/09/2014, 15:30:21] Stijn: Nice, I timed my lap, 02:01:99 and you?,当前模式可能会删除“, 02:01:99”,因为它会在给定行中查找该模式的每个实例。
  • .docx 不仅仅是纯文本,它是一组压缩的.xml 文件。这个问题比你意识到的要多。
  • @PeterWood 我知道 docx 格式。但是,将 docx 导出为纯文本文件并不难。由于在这种情况下数据只是一个聊天记录,因此在清理后保留文本格式似乎是多余的。但我想我也应该在答案中提到这一点,而不是假设事情。有些人可能会发现此链接也很有用:stackoverflow.com/a/35871416/4701044
猜你喜欢
  • 2019-05-12
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多