簡體   English   中英

在Python中將文本文件拆分為整數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM