【问题标题】:Splitting a text file into integers in Python在 Python 中将文本文件拆分为整数
【发布时间】:2018-11-23 14:10:07
【问题描述】:
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 到底应该是什么样子?
  • 您仍然没有发布列表。还有输入有两个1,为什么输出有三个?
  • 这是一个例子。我只想在数据文件中获取完全相同的值,将它们拆分为单独的整数,然后以相同的顺序将它们连续放入一个空列表中。

标签: python list split integer


【解决方案1】:

这可能是最简单的解决方案。请记住,字符串是可迭代的。

datalist = []
with open("data1.txt") as f:
    for line in f:
        line = line.replace(" ", "")
        line_list = list(line.strip())
        datalist.append(line_list)

【讨论】:

  • 这与 timgeb 发布的解决方案基本相同,但为了便于阅读,我选择将其拆分为多行。
  • 这将有换行符。
  • 你为什么要扔掉line.replace(" ", "")的结果?
【解决方案2】:

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']]

【讨论】:

    【解决方案3】:

    这个正则表达式可以工作:

    import re
    digits = "000001"
    re.sub(r'([0-9])(?!$)', r'\1,', digits)
    

    只传递文件的每一行而不是上面的数字

    【讨论】:

      【解决方案4】:

      如果您可以使用 3rd 方库,您可以使用 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']]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-29
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多