所以我对我正在编写的脚本有一个小问题。我有一个看起来像这样的文本文件:
'20 zebra 12 bear'
这只是一个例子,格式是 1 行所有项目用空格分隔。该脚本可以对它们进行排序并对字符串执行其他一些操作,但我不知道如何保持它的设置方式。例如,上面的行应该像这样排序:
12
bear
20
zebra
我需要在数字位置保留一个数字,在字符串位置保留一个字符串,但它们应该按字母数字排序。到目前为止,这是我的脚本:
#!/usr/bin/python
# Make sure you use the proper modules.
import sys, string
# This area defines the arguments and returns a usage message should it be used incorrectly.
try:
infilename = sys.argv[1]; outfilename = sys.argv[2]
except:
print "Usage:",sys.argv[0], "infile outfile"; sys.exit(1)
ifile = open(infilename, 'r') # Opens the input file for reading
ofile = open(outfilename, 'w') # Opens the output file for writing
data = ifile.readlines()[0].split() # Reads the lines on the input file
# The items in the list are sorted here and defined by a space.
sort = sorted(data, key=lambda item: (int(item.partition(' ')[0])
if item[0].isdigit() else float('inf'), item))
# Use this to remove any special characters in the list
filtered = [s.translate(None, string.punctuation) for s in sort]
ofile.write('\n'.join(filtered)) # Writes the final output to file (one on each line)
ifile.close() # Closes the input file
ofile.close() # Closes the output file
我知道它不是最漂亮的,但我使用 Python 的时间不长,所以如果你有关于如何让它更漂亮的建议,我会全力以赴。我真正需要的只是将数字保留为数字,将字符串保留为字符串,但要交换它们以进行排序。感谢您提供的任何帮助。