【发布时间】:2023-02-23 03:17:57
【问题描述】:
我正在尝试使用 Python 创建两个满足以下条件的 csv 文件:
- 文件 1 名称:test1,文件 2 名称:test2
- 文件1和文件2都有10行;
- 文件 1 和文件 2 都有名为“key1”和“key2”的 2 列,包含长度为 20 的随机字符串。
- 文件 1 和文件 2 都有 8 列,名为“val1”,...,“val8”,包含 -1000 到 +1000 之间的随机浮点数;
- 对于这两个文件,从第1行到第6行,test1和test2中对应的行具有相同的键和值;
- 对于这两个文件,从第 7 行到第 8 行,只有最后一列在 test1 和 test2 中具有不同的浮点数。其余列具有完全相同的键和值。
- 对于这两个文件,从第 9 行到第 10 行,test1 和 test2 中对应的行具有相同的键和值。
这是我的代码:
import csv import random import string NUM_ROWS = 10 NUM_COLS = 10 KEY_COLS = ["key1", "key2"] VAL_COLS = ["val"+str(i+1) for i in range(8)] FLOAT_RANGE = (-1000, 1000) STRING_LENGTH = 20 def random_string(length): return ''.join(random.choice(string.ascii_letters) for _ in range(length)) with open('test1.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) header_row = KEY_COLS + VAL_COLS writer.writerow(header_row) for i in range(6): key_values = [random_string(STRING_LENGTH) for _ in range(len(KEY_COLS))] val_values = [random.uniform(*FLOAT_RANGE) for _ in range(len(VAL_COLS))] writer.writerow(key_values + val_values) for i in range(2): key_values = [random_string(STRING_LENGTH) for _ in range(len(KEY_COLS))] val_values = [random.uniform(*FLOAT_RANGE) for _ in range(len(VAL_COLS)-1)] + [random.uniform(*FLOAT_RANGE)] writer.writerow(key_values + val_values) for i in range(2): key_values = [random_string(STRING_LENGTH) for _ in range(len(KEY_COLS))] val_values = [random.uniform(*FLOAT_RANGE) for _ in range(len(VAL_COLS))] writer.writerow(key_values + val_values) with open('test2.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow(KEY_COLS + VAL_COLS) for i in range(6): key_values = [random_string(STRING_LENGTH) for _ in range(len(KEY_COLS))] val_values = [random.uniform(*FLOAT_RANGE) for _ in range(len(VAL_COLS))] writer.writerow(key_values + val_values) for i in range(2): key_values = [random_string(STRING_LENGTH) for _ in range(len(KEY_COLS))] val_values = [random.uniform(*FLOAT_RANGE) for _ in range(len(VAL_COLS)-1)] + [random.uniform(*FLOAT_RANGE)] writer.writerow(key_values + val_values) for i in range(2): key_values = [random_string(STRING_LENGTH) for _ in range(len(KEY_COLS))] val_values = [random.uniform(*FLOAT_RANGE) for _ in range(len(VAL_COLS))] writer.writerow(key_values + val_values) print("Files created with", NUM_ROWS, "rows and", NUM_COLS, "columns each.") print("Key columns:", KEY_COLS) print("Value columns:", VAL_COLS) print("Floating numbers range:", FLOAT_RANGE) print("String length:", STRING_LENGTH) `但它未能创建任何 csv 文件,我不确定为什么。任何帮助表示赞赏!
我希望根据上述条件/要求创建 2 个 csv 文件。
【问题讨论】: