【问题标题】:How to convert strings from a file in this format to a number array?如何将这种格式的文件中的字符串转换为数字数组?
【发布时间】:2023-03-27 18:41:01
【问题描述】:

我有一个这样的文本文件

.txt

1, 2, 3, 4, 5, 6, 7, 8, 9

我想在 python 中将其视为一个数组,这就是我目前所拥有的

python 文件

file_board = open('index.txt')
board = file_board.read().split(',')
print board
print len(board)

输出

['[[1', ' 2', ' 3]', ' [4', ' 5', ' 6]', ' [7', ' 8', ' 9]]\n']
9
list index out of range

所以我想做的是一些如何将其放入二维数组进行操作

注意我想在没有任何外部库的情况下这样做,内置库很好

顺便说一句,我想把它写回一个新文件 格式为

1, 2, 3, 4, 5, 6, 7, 8, 9

【问题讨论】:

  • 欢迎来到 SO!看看这个帖子,我想它有你想要的答案:stackoverflow.com/questions/7163024
  • 更新了我的问题@slider
  • 更新了我的问题@MCO
  • 更新了我的问题@AuroraWang
  • 你的输出和文本文件不一致。如果您的文本文件真的如您所说,则输出将在每个逗号处拆分,产生[1,2,3,4,5,6,7,8,9]

标签: python arrays python-2.7


【解决方案1】:
str = '[[1, 2, 3], [4, 5, 6], [7, 8, 9]]'
data = eval(str)
for rec in data:
    print rec

输出

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

如果你想要一个二维数组(你编辑了你的问题)。您可以使用正则表达式删除 '[' 和 ']' 和空格。

import re
str2 = re.sub('[\[\] ]', '', str)
print str2

输出 1,2,3,4,5,6,7,8,9

【讨论】:

    【解决方案2】:

    @dlink 的回答是可以的,但为了安全起见,您可能需要使用ast.literal_eval 来防止安全问题:

    import ast
    
    file_board = open('index.txt')
    board = ast.literal_eval(file_board.read())
    print board
    print len(board)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 2013-07-11
      相关资源
      最近更新 更多