【问题标题】:Reverse file lines in python在python中反转文件行
【发布时间】:2021-01-20 18:00:17
【问题描述】:

我想反转保存的文件行,并在每一行中添加一个字符串,然后将其保存到新的文本文件中。 输入:

A
Z
E
R

输出:

Exemple/R
Exemple/E
Exemple/Z
Exemple/A

【问题讨论】:

  • 欢迎使用 StackOverflow!你对如何解决这个问题有什么想法?请出示您当前的代码以帮助您解决问题。

标签: python python-3.x file


【解决方案1】:

编辑:

使用新格式查看编辑问题后

A
Z
E
R

那你就可以了

  • 使用 [::-1] 反转字符串。
  • 使用split("\n") 换行分割。
  • 然后循环遍历它并以这种方式打印你想要的值:
txt = '''A
Z
E
R'''
txt = txt[::-1]
split = txt.split("\n")
for x in split:
    print("Exemple/"+x)

另外,如果你想读写一个文件,那么你可以:

  • 打开一个新文件
  • 使用readlines()逐行获取文本为字符串
  • 和之前一样,得到反转的文本
  • 写入新文件
with open("your_file_to_read") as f:
    txt = f.readlines()
    txt = txt[::-1]
    with open("your_file_to_write", "w") as outf:
        for x in txt:
            outf.write("Exemple/"+x)

【讨论】:

  • 请注意,OP 打算将输入放在单独的行上,而不是空格分隔(他们只是不明白如何使带有换行符的预格式化文本在 Markdown 中正确显示)。我已经修复了问题的格式;你可能想调整你的答案以匹配。
  • 更新答案,谢谢。我没有注意到格式。
  • 谢谢@J.F.它就像一个魅力我只在最后一行添加了“\n”
  • 不客气。此外,如果问题已解决,请将答案标记为已接受。
【解决方案2】:

条件

根据您提供的信息,我假设您的意思如下:

  1. 从文本文件中读取并从文件中提取文件行,如“A”。
  2. 颠倒行的顺序
  3. 将不相关的字符串连接到文件行的每个字符。 (例如“R”->“示例/R”)
  4. 创建一个新的文本文件。
  5. 将新字符串输出到新的文本文件中。
  6. 如有必要,重复新的文件行。

程序

考虑到这些条件,我创建了一个名为 line_inverter() 的函数,它接受以下参数:

  • import_file_name(您要从中获取数据的文件的名称)
  • export_file_name(您要创建并将数据导出到的新文件)
  • prefix_string(您要添加到一行中每个字符前面的字符串)

这是 Python 3 中的原始代码。(如果您想在 GitHub 上的存储库中查看它,请单击 here

# inverts file line(s) and writes to a new file
def line_inverter(import_file_name, export_file_name, prefix_string):
    
    # tries to open import file in reading mode
    f1 = open(import_file_name, "r")
    
    # tries to create export file in append mode
    f2 = open(export_file_name, "a")
    
    
    # creates a list with each line in a separate index
    line_list = f1.readlines()
    
    # reverses line order
    line_list.reverse()
    
    # closes import file, since all data is stored in line_list
    f1.close()
    
    
    # loops through line_list to modify individual indices
    for line in line_list:
        
        # strips the "\n" from the string
        line = line.strip("\n")
        
        # concatenates prefix_string and a character from the line_list
        x = prefix_string + line
        
        # appends the line to the new file
        f2.write(x)
        
    # once the loop is finished, close the new file
    f2.close()

我还是个新手,所以这肯定不完美。不过,它适用于我测试过的内容。尽管如此,如果它以任何方式变砖,请告诉我,我不想给出一个错误的程序:3

【讨论】:

  • try 块使得如果为import_file_name 输入了不正确的参数类型,它将继续执行该函数(在打印一些文本之后) - 你可能不想要这个.无论如何,我不确定你为什么会捕获 TypeError,因为该异常已经足够描述了。还可以考虑学习如何使用with 块:它会使这段代码的文件处理更加pythonic。最后,我不会在 for 循环中使用字母 i 来表示非索引 - 它看起来有点混乱。
  • 谢谢你告诉我!我已经删除了这些陈述并让它成为现实。哦,我一定会学习的,任何需要改进的地方!我也会把 i 换成别的东西,抱歉!
  • 在 def line_inverter() 处出现语法错误。我试过 def line_inverter("import_file.txt", "import_file.txt","www./" 和 def line_inverter(f1, f2,x) 我应该导入任何书目来处理函数 def 吗?
  • 如果你想调用一个函数,你需要用上面的代码在一个python文件中写一个新行并输入以下内容:line_inverter("import_file.txt", "export_file.txt", "www./"),我把它从一个文件中取出,导出到另一个修改过的行。并且不要在前面包含“def”,这意味着您正在定义(或重新定义)一个函数。
猜你喜欢
  • 2014-12-30
  • 1970-01-01
  • 2022-12-03
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
相关资源
最近更新 更多