python文件顺序_python – 按所需顺序对一个巨大的文件进行排序

我有以下形式的数据:

"jd".

.

.

"abc".

.

"jd" "l".

我需要对数据进行排序,以便只对奇数行进行排序,并根据奇数行对相应的偶数行进行排序.即,仅使用奇数行进行文件的排序,即仅对以下行进行排序:

"jd".

.

.

.

.

"jd".

偶数行得到副本.例如,上面的排序顺序是:

.

"jd" "l".

.

"abc".

"jd".

.

现在偶数行“< G>< k>”jd“”l“.”总是出现在奇数行“< A>< B>< C>< D>”之后.并且偶数行“< E>< F>< G>>< G>”abc“.”总是出现在奇数行“< A>< B>< D>< F>.”之后.并且偶数行“< K>< J>< N>< D>.”出现在奇数行< j>之后&LT L个; &LT N&GT “JD”.

我尝试使用带有并行选项的linux sort命令,因为我的文件大小是200 GB – 但这样做会使奇数行的顺序受到干扰.有没有办法使用linux sort命令或使用一些python程序我可能实现200 GB文件的所需行为

解决方法:

由于你使用的是linux,我认为你安装了vim(默认情况下我的ubuntu机器上有一个最小版本).

如果没有,请先安装它.

我相信vim可以处理大文件而不会窒息(不像记事本)

>使用vim,将每一行合并到它下面的一行

input.dat

"jd".

.

.

"abc".

.

"jd" "l".

ex input.dat -c 'g/^/j' -c 'sav! joined.dat' -c q

joined.dat:

"jd". .

a "abc".

. "jd" "l".

g是全局命令,它匹配具有行开始(^)(每行)的每一行并执行join命令.

在那之后,你将每条偶数行追加到前一个不均匀的行,用两个空格分隔.

然后它保存(覆盖!)作为joined.dat并退出

>像通常使用sort命令一样对joined.dat文件进行排序

Sorted.dat

. "jd" "l".

a "abc".

"jd". .

>“取消加入”你在第一步加入的内容

sed 's/. /.\n/' sorted.dat > finishedproduct.dat

假设您的初始文件在每行末尾都有一个点.

注意:如果你使用相同的文件作为sed的输入和输出,我相信你可以得到一个空白文件.

finishedproduct.dat:

.

"jd" "l".

.

"abc".

"jd".

.

在这种情况下,sed基本上替换点和换行符的点和两个空格,有效地替换vim引入的两个空格来连接行.

我知道它不是一个非常优雅的解决方案(更不用说pythonic)了,但它规避了“必须编写自定义程序”以及它涉及的内存问题. 😉来源:https://www.icode9.com/content-1-291451.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以给你一个Python脚本,它可以提取CSV文件的一列值并将它们排序:import csv with open('sample.csv') as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') line_count = 0 for row in csv_reader: if line_count == 0: print(f'Column names are {", ".join(row)}') line_count += 1 else: print(f'{row[0]} works in the {row[1]} department, and was born in {row[2]}.') line_count += 1 print(f'Processed {line_count} lines.')sortedlist = [] with open('sample.csv', 'r') as csvfile: csvreader = csv.reader(csvfile) next(csvreader) for row in csvreader: sortedlist.append(row[2]) sortedlist.sort() print(sortedlist) ### 回答2: 可以使用Python的csv模块来提取CSV文件的一列值并排列。首先,我们要导入csv模块,并打开CSV文件。然后,使用csv.reader函数来读取文件,并将每一的特定列的值保存到一个列表。接下来,可以使用Python的内置的sorted函数对列表进行排序。最后,可以使用for循环遍历排序后的列表,并将每个值打印出来。 下面是一个示例代码来提取CSV文件的第一列的值并进行排序: ```python import csv # 打开CSV文件 with open('input.csv', 'r') as file: # 创建一个读取器 reader = csv.reader(file) # 创建一个空列表来保存第一列的值 column_values = [] # 遍历每一,并将第一列的值保存到列表 for row in reader: column_values.append(row[0]) # 对列表进行排序 column_values.sort() # 打印排序后的列值 for value in column_values: print(value) ``` 将上述代码保存为Python脚本文件(例如extract_column.py),并将文件名为input.csv的CSV文件与脚本文件放在同一目录下。运脚本文件后,将会提取CSV文件的第一列的值并按升序排列。结果将逐打印到控制台。 ### 回答3: 使用Python编写脚本提取CSV文件的一列值并进行排序可以通过以下步骤实现: 1. 导入所的模块: ```python import csv ``` 2. 打开CSV文件并读取数据: ```python with open('input.csv', 'r') as file: csv_data = csv.reader(file) column_values = [] for row in csv_data: column_values.append(row[0]) # 假设要提取第一列数据 ``` 在这个例子,我们假设文件名为"input.csv",要提取的列是第一列(索引为0)。可以根据实际求修改。 3. 对提取的列值进行排序: ```python sorted_values = sorted(column_values) ``` 使用Python的内置sorted()函数对列值进行排序,并将结果保存在sorted_values变量。 4. 输出排序后的值: ```python for value in sorted_values: print(value) ``` 使用循环遍历sorted_values列表的值,并逐输出。 完整的脚本示例如下: ```python import csv with open('input.csv', 'r') as file: csv_data = csv.reader(file) column_values = [] for row in csv_data: column_values.append(row[0]) # 假设要提取第一列数据 sorted_values = sorted(column_values) for value in sorted_values: print(value) ``` 通过运这个脚本,你将能够提取CSV文件的一列值并按照顺序排列输出。注意,你要将"input.csv"替换为你实际使用的CSV文件文件名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值