我在文件中有一个大行.我试图从某条特定线路中取出一些数据.
例如,文件的第107行:
<test>H</test><test>E</test><test>L</test><test>L</test><test>O</test>
Run Code Online (Sandbox Code Playgroud)
我怎么能把它分开X次直到行的结尾,所以它返回
H
E
L
L
O
Run Code Online (Sandbox Code Playgroud)
但是没有使用解析器.
我一直在努力将文件分成行,但我只能循环一次,直到它找到要拆分的第一部分.如何让它继续通过线路分裂?
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()
Run Code Online (Sandbox Code Playgroud)
考虑使用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
Run Code Online (Sandbox Code Playgroud)
此外,每次循环文件中的一行时,都会打开file.html文件.您应该with在for循环之外打开语句.这可能会解决您的问题,因为目前您正在重写同一行(因为您在第一行打开文件,写入,然后关闭文件,然后重复).