【问题标题】:How can I create an array from a .txt file?如何从 .t​​xt 文件创建数组?
【发布时间】:2021-12-27 13:03:05
【问题描述】:

我有一个 txt 文件,它只有一个连续的字符串 MNHY...

我想要输出 ['M','N','H','Y'...]

我尝试过下面这段代码和它的各种形式,但我只能将 txt 文件转换为一个连续的列表。

def text_check(filename):
    my_file = open(filename,"r")
    print(my_file.read().splitlines())
text_check("demo_text.txt")

如何将 .txt 文件转换为这种 ['M','N','H','Y'...] 格式?

【问题讨论】:

  • 您知道如何从文件中读取行(尽管您可能希望在打印它们之前将读取的行存储在变量中......),现在查看如何迭代字符串中的项目(或如何将其转换为list 个字符)
  • 这能回答你的问题吗? Break string into list of characters in Python
  • 好的,谢谢,我会尽量集中精力查找这个!我觉得我只是因为缺乏经验而很容易迷路。
  • 别担心,学习如何(以及在​​哪里)查找内容是学习如何编码的第一步 :) 这需要一段时间,但它会很快变得更好!通常,对于像这个这样的非常基本的问题,总有一个答案,诀窍是学习正确的搜索词;)
  • @MikeScotty 我希望它是那么容易!以简单的方式列出它只会返回一个空列表。

标签: python


【解决方案1】:

假设文件包含

MNYH…

你可以使用:

with open(filename) as f:
    out = list(f.read().strip())
print(out)

输出:['M', 'N', 'H', 'Y', '…']

多行文件

MNHY
ABCD
with open(filename) as f:
    out = [c for l in f for c in l.strip()]

输出:['M', 'N', 'H', 'Y', 'A', 'B', 'C', 'D']

【讨论】:

  • 这返回了一个 TypeError: Not Iterable 在对象上。不过感谢您的建议。
  • @nosebig 你有哪个python版本?你确定文件只有一行吗?
  • 3.7 文件中有多行,抱歉,如果从...中不清楚,请继续
  • @nosebig 它应该仍然可以工作,但在输出中包含换行符。你能再检查一下吗?我更新了处理多行案例的答案
【解决方案2】:

只需使用list() 方法。

python 中的list() 方法将连续的字符串转换为单独的字符。

换句话说,适合您的代码是:

def text_check(filename):
    my_file = open(filename,"r")
    li_chars = list(my_file.read().splitlines()[0])
    print(li_chars)
    my_file.close()
text_check("demo_text.txt")
  1. list() 方法在接受 字符串 时会进行拆分,因此我将 [0] 添加到 splitlines()。

  2. 我在text_check()末尾添加my_file.close()。


改进

def text_check(filename):
    with open(filename,"r") as f:
        li_chars = list(f.read().splitlines()[0])
        print(li_chars)
text_check("demo_text.txt")

with 语句提供了一种确保始终使用清理的方法。

【讨论】:

  • 谢谢,这返回了包含我正在寻找的 .txt 文件中的单个字符的数组。
猜你喜欢
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多