【问题标题】:How to loop print output and write each result to csv?如何循环打印输出并将每个结果写入csv?
【发布时间】:2020-04-18 07:13:18
【问题描述】:

我已经编写了以下代码来生成一个随机的 12 位数字字符串:

import uuid

def my_random_string(string_length=12):
    """Returns a random string of length string_length."""
    random = str(uuid.uuid4()) # Convert UUID format to a Python string.
    random = random.upper() # Make all characters uppercase.
    random = random.replace("-","") # Remove the UUID '-'.
    return random[0:string_length] # Return the random string.

print(my_random_string(12)) # For example, D9E50Cd

如何循环并将每个字符串输出保存到 .csv 文件?

【问题讨论】:

  • 每行包含一个值的 CSV 格式文件中没有分隔符,只需将每个字符串值加上换行符写入以写入模式打开的文本文件即可创建。您还需要在循环内调用您的函数,以在循环的每次迭代中获得不同的随机值。
  • 你期望的输出如何??

标签: python loops csv random output


【解决方案1】:

下面的代码会将随机字符串(使用您提供的代码)输出到 CSV 文件。

import csv
import uuid

def my_random_string(string_length=12):
    """Returns a random string of length string_length."""
    random = str(uuid.uuid4()) # Convert UUID format to a Python string.
    random = random.upper() # Make all characters uppercase.
    random = random.replace("-","") # Remove the UUID '-'.
    return random[0:string_length] # Return the random string.

def random_string_to_csv(file_name, column_header, num_rows):
    num_cols = len(column_header)
    with open(file_name, mode='w', newline = '') as f:
        rand_string_writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
        rand_string_writer.writerow(column_header)
        for i in range(num_rows):
            row = [my_random_string() for j in range(num_cols)]
            rand_string_writer.writerow(row)

column_header = ['col1', 'col2', 'col3', 'col4']
num_rows = 5
random_string_to_csv('test.csv', column_header, num_rows)

CSV 文件通常有列标题,因此我将其包含在代码示例中。您可以轻松更改函数定义以排除列标题并在调用函数时显式定义列数,如下所示:

def random_string_to_csv(file_name, num_cols, num_rows):
    with open(file_name, mode='w', newline = '') as f:
        rand_string_writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
        for i in range(num_rows):
            row = [my_random_string() for j in range(num_cols)]
            rand_string_writer.writerow(row)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2021-12-31
    • 2018-08-12
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多