我在文件中有一个大行。我试图从某个特定的行中取出一些数据。
例如,文件的第107行:
<test>H</test><test>E</test><test>L</test><test>L</test><test>O</test>
我怎么能把它分开X次直到行的结尾,所以它返回
H
E
L
L
O
但不使用解析器。
我一直在努力将文件分成行,但我只能循环一次,直到找到要拆分的第一部分。如何让它继续通过线分裂?
matches = open('file.html', 'r')
for line in matches:
test = line.split("<test")
with open ('test.txt', 'a') as file:
file.write(test[0].split("\">")[-1] + "\n")
matches.close()
答案 0 :(得分:5)
考虑使用HTML解析器,例如BeautifulSoup
。它将使工作变得更加容易,并且它是为这样的设计而设计的:
>>> from bs4 import BeautifulSoup as BS
>>> s = "<test>H</test><test>E</test><test>L</test><test>L</test><test>O</test>"
>>> soup = BS(s)
>>> for i in soup.find_all('test'):
... print i.text
...
H
E
L
L
O
此外,每次循环file.html
文件中的一行时,您都会打开文件。您应该在for循环之外打开with
语句。这可能会解决您的问题,因为您目前正在重写同一行(因为您在第一行打开文件,然后重写,然后关闭文件,然后重复)。
答案 1 :(得分:0)
你也可以尝试使用正则表达式。这是一个简单的python解决方案
import re
def strip_html(text):
p = re.compile(r'<.*?>')
return p.sub('', text)