【问题标题】:How to sort alphabetically a .txt file with python?如何使用python按字母顺序对.txt文件进行排序?
【发布时间】:2015-02-27 04:29:45
【问题描述】:

我有一个 .txt 文件,其中有很多 id 喜欢这个:

SDFSD_23423432_SDFSDF
SHTHWREWER_234324_werew
dsdfdsf_334DSFGSDF_w
....
SASFSD3452345_$534253

如何创建此文件的按字母顺序排序的版本?这是我尝试过的:

f=open(raw_input("give me the file"))
for word in f:
    l = sorted(map(str.strip, f))
    print "\n",l
    a = open(r'path/of/the/new/sorted/file.txt', 'w')
    file.write(l)

但我得到了这个例外:

 line 6, in <module>
    file.write(l)
TypeError: descriptor 'write' requires a 'file' object but received a 'list'

我该如何解决这个问题,以便创建一个新的按字母顺序排序的文件,每行一个新行,例如像这样:

id
id
id
...
id

【问题讨论】:

  • 新排序的文件...我很困惑,我正在创建它的新版本。感谢@thefourtheye 的反馈
  • 你在哪里声明file变量?
  • 还有其他方法吗?谢谢大家!

标签: python list python-2.7 sorting io


【解决方案1】:

问题是,你引用的是内部文件对象

>>> file
<type 'file'>
>>> file.write([])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: descriptor 'write' requires a 'file' object but received a 'list'

您必须写入您在代码中创建的文件对象。

a = open(r'path/of/the/new/sorted/file.txt', 'w')
a.write(str(l))

【讨论】:

  • 感谢您的帮助,我遇到了这个异常:line 8, in &lt;module&gt; a.write(l) TypeError: expected a character buffer object 知道如何解决它吗?
  • 感谢您的帮助。我在一行中得到了新文件...如何为列表中的每个元素指定新行?。
  • 如果你有多行,那么你可以使用writelines。如果要逐行编写,请在每行后添加\n
  • 我使用了 writelines 但还是一样,都在一行中:a.writelines(str(l))。知道该怎么做吗?。
  • 使用writelines(l) 而不是str(l)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 2018-05-05
  • 2022-10-07
  • 2011-08-29
相关资源
最近更新 更多