如何打开格式的大文本文件
[[skill1, skill2, skill3, ...], [skill1, skill4, skill6, ...], ….]
在 Python 中。我尝试过使用熊猫和numpy,但read_csv方法或其他此类方法不起作用。
更新:我能够使用以下代码行读取.txt文件:
f = open("demofile.txt", "r")
print(f.read(5))
由于您没有明确提到该文件包含任何换行符,因此我将使用以下方法。编写一些自定义 Python 代码来
- 加载文件
- 搜索并将 "], [" 替换为 "">
- 搜索并将"["替换为"。
- 将此文件保存在磁盘上,并将其加载为 CSV 格式,并使用","作为分隔符。
对于大文件,我可能会使用 SED。以下代码执行上述操作。它的工作原理是逐个字符读取并检查上次读取的字符是什么。根据几个 if,我确定要执行的操作。注意:我只花了几分钟,它肯定会得到优化。输入文件不需要换行符,输出将具有换行符。
lastreadchar = ''
with open("data.txt",mode='r') as i, open('out.txt','w') as o:
while True:
x = i.read(1)
if x == '': # end of file has been reached
break
elif x==' ':
pass
elif x==']':
pass
elif x=='[':
if lastreadchar == '[':
# at the beginning of the file, don't do anything
pass
elif lastreadchar == 'n': # a new line
pass
elif lastreadchar == ',': # a new line
pass
elif x==',':
if lastreadchar == ']': # at the beginning of the file
print('n')
o.write('n')
else:
print(x, end='')
o.write(x)
else:
print(x, end = '')
o.write(x)
lastreadchar = x
对于非常大的文本文件(在多 GB 范围内(,我可能会使用 SED 以这种方式处理文件。
您可以尝试逐行读取(如果您的文件是用行格式编写的(并附加数据。
for line in open('yourfile.big'):
do_something(line)
也许那时您可以尝试以ORC格式的镶木地板保存像您这样的大型(结构化(数据文件
我能够使用以下代码行读取.txt文件 f = open("demofile.txt", "r"( print(f.read(5((
更新答案:我最终做的是:
with open('file.txt') as f:
mylist = list(f)
temp = mylist[0]
l = temp.split(']')
l.pop(0)
for x in range(0,len(l)):
l[x] = l[x][3:]
l[x] = l[x].split(', ')
上面的代码最终在列表中生成了一个列表。 因此,如果我访问 l[0][0],它会给我技能 1。 数据格式如下 [[技能 1
, 技能 2, 技能 3, ...], [技能 1, 技能4, 技能6, ...], ....]思潮?