[英]Splitting a text file into integers in Python
with open("data1.txt", newline='') as f:
r = csv.reader(f)
s = list(r)
dataList = []
我有一个包含二进制整数行的数据文件,如下所示:
00000 0
00001 0
00010 0
等等
我希望能够将它们全部拆分为单个整数,以便获得完全相同的列表,但全部拆分为整数:
['0','0','0','0','0','0']
['0','0','0','0','1','0']
['0','0','0','1','0','0']
等等,然后将每个追加到dataList。 到目前为止,我可以将它们拆分为它们之间的空间,仅此而已
这可能是最简单的解决方案。 请记住,字符串是可迭代的。
datalist = []
with open("data1.txt") as f:
for line in f:
line = line.replace(" ", "")
line_list = list(line.strip())
datalist.append(line_list)
list(string)
将为您提供字符串中的字符列表。
假设data1.txt为
00000 0
00001 0
00010 0
你可以写
with open('data1.txt') as f:
result = [list(line.strip().replace(' ', '')) for line in f]
要得到
>>> result
[['0', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '1', '0'],
['0', '0', '0', '1', '0', '0']]
此正则表达式将起作用:
import re
digits = "000001"
re.sub(r'([0-9])(?!$)', r'\1,', digits)
而不是上面的数字只是传递文件的每一行
如果您可以使用第三方库,则可以使用Pandas进行此操作:
import pandas as pd
from io import StringIO
x = StringIO("""00000 0
00001 0
00010 0""")
# replace x with 'file.csv'
df = pd.read_csv(x, delim_whitespace=True, dtype=object, header=None)
res = [[*x, y] for x, y in df.values]
结果:
[['0', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '1', '0'],
['0', '0', '0', '1', '0', '0']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.