我正在使用python对文本文件进行一些操作。但有一点我找不到解决方案了。我希望有人可以帮助我。
在每行中的该文本文件中,我有单词order
,之后是由,
和数字组成的各种字符串。
现在我想要删除单词order
以及该行中的所有内容,但我无法找到方法。文件中order
所在的位置始终有所不同,因此我无法指向某个位置并在之后删除所有内容。
答案 0 :(得分:1)
执行您想要的操作非常容易,因为您只删除部分文本,因此您可以使用“r +”模式重写您所读取的同一文件。
with open(filename,'r+') as fr,open(filename,'r+') as fw:
for line in fr:
x = line.find('order')
fw.write(line if x==-1
else line[0:x]+'\n' if '\n' in line
else line[0:x])
fw.truncate()
如果你的文件不是太大,那么可以完全读取并保存在RAM中,这是使用正则表达式的另一种方法:
import re
r = re.compile('(.*?)(?:order.*?$|\Z)',
re.MULTILINE|re.DOTALL)
with open(filename,'r+') as f:
x = f.read()
f.seek(0,0)
f.write(''.join(r.findall(x)))
f.truncate()
答案 1 :(得分:0)
逐行遍历文件(我假设你已经这样做了)然后使用string.find
:
>>> import string
>>> x = 'helloORDERme'
>>> string.find(x,"ORDER")
5
>>> x[:string.find(x,"ORDER")]
'hello'
或者如果你真的需要知道这一点:
import string
with open('myfile', 'rU') as f:
for line in f:
print line[:string.find(line,"order")]
我将把更新后的值作为提问者留下来作为提问。
答案 2 :(得分:0)
lines = "hello1OrderABC\nhello2OrderDEF".splitlines()
for line in lines:
print line[:line.find("Order")]
------
hello1
hello2
第一行创建一个行列表['hello1OrderABC','hello2OrderDEF']。其余的遍历此列表并打印出“Order”一词的所有内容。