我试图在每次正好有4个整数后跟ht efile中的一行空格分割文件。我想我几乎就在那里(看所有问题和例子)。我想我需要最后一次推动。任何人都可以帮助我。
脚本会拆分以4个整数开头的所有行。它只需要在只有4个整数时分割,而不是超过4个。
dat.vector
尝试1
import re
file = open('test.txt', 'r')
尝试2
for x in file.read().split(re.match(r"[0-9]{4}\s", file.readline())):
print (x)
尝试3
for x in file.read().split(re.match(r"[0-9][0-9][0-9][0-9]\s", file.readline())):
print (x)
示例输入
for x in re.split(r"[0-9]{4}\s", file.read()):
print (x)
希望输出的是上面分组的内容:
1020
200123242151111231 bla bla bla
200123331231231441 bla bla bla
1030
200123242151111231 bla bla bla
200123331231231441 bla bla bla
和
200123242151111231 bla bla bla
200123331231231441 bla bla bla
答案 0 :(得分:3)
re.match(r"[0-9]{4}\s", file.readline())
这将读取文件的一行并将正则表达式与其匹配。然后.split(...)
使用该结果作为静态分隔符来分割整个文件。这与你想要达到的目标无关。
(它实际上甚至没有这样做,因为整个文件已被阅读,但这不是重点)
也许您正在考虑做.split(re.compile(...))
这样的事情?在任何情况下都不起作用,str.split
不会处理正则表达式。
尝试re.split(r"\b[0-9]{4}\s+", file.read())
将文件拆分为由4位数字分隔的片段。 \b
表示字边界'并防止它分裂4个数字,这只是较长数字的末尾。请注意,如果您的文件以4位数字开头,则第一部分将为空。
答案 1 :(得分:0)
您使用readline
读取文件,它逐行读取,在换行符上拆分文件。
如果文件不是很大,您可以立即阅读,例如
with open(file_path, 'r') as file:
content = file.read()
(见this answer)
然后应用正则表达式。