【问题标题】:python split string into new lines into a filepython将字符串拆分为新行到文件中
【发布时间】:2020-04-10 05:03:31
【问题描述】:

我正在尝试列出几个数字并将每个数字拆分为 新行到新文件中。

因此 文件中的f=['Hans', 'Anna', 'Vladimir', 'Michael', 'Ed', 'Susan', 'Janice', 'Jo'] names.txt 需要取f 中列表的len 并将每个len 分隔到新行。

['4 4 8 7 2 5 6 2 '] 应该在创建的文件中

   4
   8
   7
   2
   5
   6
   2

这就是我所做的:

with open("names.txt","r") as f:
    f=f.read()
    f=f.split()  # take from original file

def size(x):

    with open("name_length.txt","w") as w:
        l=[str(len(n))+' ' for n in x]   # create the len list
        l="".join(l)
        l=str(l)
        l=l.split('\n+')
        print(f'this,{l}')
        print(f'this is,{l}')
        w.writelines(l)
        return l

print(size(f))         

【问题讨论】:

  • 你能用你的期望输出编辑你的帖子吗?你的格式不是很好。

标签: python string newline


【解决方案1】:

试试这个:

#Read the data from input file.

with open("names.txt","r") as f:
    input_list = f.read().splitlines()    # Will look like : lines = ['Hans', 'Anna', 'Vladimir', 'Michael', 'Ed', 'Susan', 'Janice', 'Jo']

def write_len(input_list):
    with open("name_length.txt","w") as w:
        for item in input_list:
            f.write("{0}\n".format(len(item)))

    return 1

print(size(input_list))

我不明白你为什么需要先用join 创建一个字符串,然后再拆分它。上面是一个示例,说明如何将字符串的长度直接写入文件,每个元素都换行。

另外,我想补充一点,您打开了一个文件进行读取,并将文件指针命名为f。在下一行中,您使用相同的变量f 来存储read"() 的值。这是你应该避免做的事情。变量f 的上下文正在发生变化,在某些情况下可能会产生问题。

您可以使用列表理解和join 来完成相同的操作:

#Read the data from input file.

with open("names.txt","r") as f:
    input_list = f.read().splitlines()    # Will look like : lines = ['Hans', 'Anna', 'Vladimir', 'Michael', 'Ed', 'Susan', 'Janice', 'Jo']

def write_len(input_list):
    final_str = "\n".join([str(len(item)) for item in input_list])

    with open("name_length.txt","w") as w:
        w.write(final_str)

    return 1

print(size(input_list))

输出:

4
4
8
7
2
5
6
2

上面的输出被写入一个文件。

【讨论】:

  • 谢谢你的帮助,输出应该是单独一行中的每个数字,因此第一行是 4,然后是 4,然后是 8,然后是 7 等等,如果可能的话,还可以使用列表理解、减少、映射或过滤器并且不使用 for 循环,这个练习旨在展示这个函数如何用几行代码替换 for 循环
  • 较早的解决方案是在文件的单独行中写入每个数字。然而,我给出了另一个使用列表理解的解决方案,它也可以做同样的事情,并且输出写在一个文件中,如下所示。
  • 如有任何疑问,请随时提出。如果有帮助,也不要忘记投票并标记答案已接受。 :)
猜你喜欢
  • 2016-03-13
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
相关资源
最近更新 更多