python - txt 到 csv 的尝试。无法理解来自 re 的 TypeError
问题描述
我正在尝试将此文件https://bpa.st/SNPQ转换为 CSV 文件。我花了很长时间将这段代码放在一起,但我不明白为什么它会失败。
import re
f = open('PRM93052012100845','r')
text = f.readlines()
text = re.sub('^\n|\n$','',text)
for no,line in enumerate(text.splitlines()):
print('"'+'","'.join([i.replace('"','\\"').strip() for i in re.split('(?<=^[0-9]{2})([0-9]{13}| {13})| +',text.splitlines()[no].strip()) if i != None])+'"')
(比粘贴示例中的行多得多)
我得到以下输出:
Traceback (most recent call last):
File "/home/ben/Documents/WDL Content/eCom Python/printtest.py", line 5, in <module>
text = re.sub('^\n|\n$','',text)
File "/usr/lib/python3.8/re.py", line 210, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object
我希望我可以说文件中有一些错误的数据,但是有一个 MS Office 宏可以完成相同的目标。我很想知道我做错了什么。
解决方案
text = f.readlines()
为您提供列表,因此您不能re.sub
按预期使用它string
或bytes
. 将其替换为text = f.read()
推荐阅读
- android - 我如何解决volly中的少量范围数据
- css - How to remove text area border (outline) when focused on with knockoutJs css binding?
- php - 在 WordPress 中编辑管理页面
- spring - Retrive JMS ConnectionFactory from JNDI using Spring Boot auto-configuration
- laravel - 当数据库 Laravel 5.4 发生变化时如何调度调用函数
- swift - Hashable 在快速更新后发出警告
- html - 如何使用 Redux 表单和语义 UI 呈现选择字段
- swift - Swift 获取 URLSessionDataTask 开始时间/当前操作时间
- c# - 有没有办法在 specflow 的并行测试中只运行功能?
- c# - Selenium C# - 处理登录对话框(Chrome)