Python 读取文件,查找字符串并删除字符

4

我有一组数字(NDC - 药品编号),其中包含一个 -。我想读取文件,删除 - 并将数字写入新文件。如有帮助,不胜感激。使用 Py 2.7。

1. 68817-0134-50
2. 68817-0134-50
3. 68817-0134-50

问题在于连字符不总是处于同一位置。
1. 8290-033010

它是可变的,并且可以处于任何位置。

with open('c:\NDCHypen.txt', 'r') as infile,
     open('c:\NDCOnly.txt', 'w') as outfile:
    replace("-", "")

你要在什么上面进行“替换”操作?你必须在“infile”上添加一个循环。 - user1907906
2个回答

17
with open(r'c:\NDCHypen.txt', 'r') as infile, \
     open(r'c:\NDCOnly.txt', 'w') as outfile:
    data = infile.read()
    data = data.replace("-", "")
    outfile.write(data)

为了防止行尾转换(例如在'\r\n'\n'之间),请以二进制模式打开两个文件:将open的第2个参数传递为'rb''wb'


有没有办法重写打开的初始文件?例如,如何从“c:\NDCHyphen.txt”中删除文本或行? - oldboy
@BugWhisperer:是的,有多个选择,其中一些是原子性的。针对这个问题,请提出单独的问题。 - pts

12

如果你只是想使用一个脚本来完成任务,那么使用Shell脚本会比Python实现更快速。除非你对脚本有其他要求,否则应该选择Shell脚本版本。

然而,如果你使用Python的话:

with open('c:\NDCHypen.txt', 'r') as infile, open('c:\NDCOnly.txt', 'w') as outfile:
    temp = infile.read().replace("-", "")
    outfile.write(temp)

不确定是谁以及为什么会有负面评价,但这个也非常好用。谢谢! - Shaji
我认为很难预测(也与系统相关)shell脚本或Python实现哪个更快。对于大文件,它们都会受到I/O限制,因此墙上时间差异应该可以忽略不计。Python实现使用更多内存(它在内存中保留2份输入的副本),这对于大文件来说是浪费的。 - pts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接