1

如果问题写得不好,请提前道歉。这是我在该网站上的第二篇文章,我是一名新手程序员。首先,这是我的目标:

步骤 0:将 CSV 文件转换为记录数组

第 1 步:将记录数组拆分为两个子数组

第 2 步:洗牌子阵列

第 3 步:将两个子数组拆分为四个较小的子数组

第 4 步:打乱每个子数组

第 5 步:混合和匹配子数组之间的值

第 6 步:将子数组附加到两个记录数组之一,然后将记录数组组合成单个 CSV 文件

前几个步骤相当简单。

步骤 0:

import numpy as np
import random
from matplotlib.mlab import csv2rec
from matplotlib.mlab import rec2csv

# Get recarray from CSV file
ev = csv2rec('stimuli_1.csv',delimiter = ';')
ev.resize(60) #for even splits

# Create lists to append data to
audio_files = np.recarray([],dtype = ev.dtype)
audio_files_1 = np.recarray([],dtype = ev.dtype)
audio_files_2 = np.recarray([],dtype = ev.dtype)

步骤1:

# Split recarray into two sub-arrays
split_1 = np.split(ev,2)

步骤 2、3、4 和 5:

# Shuffle sub-arrays, split again, and then shuffle again
for a in split_1:
    #Set count for mix-and-matching
    count = 0

    #Shuffle
    np.random.shuffle(a)

    #Split
    split_2 = np.split(a,2)

    for b in split_2:
        count = count+1

        #Shuffle
        np.random.shuffle(b)

        if count == 1:
            audio_files_1 = np.append(audio_files_1,b)
        elif count == 2:
            audio_files_2 = np.append(audio_files_2,b)

第 6 步:

audio_files = np.append(audio_files,audio_files_1)
audio_files = np.append(audio_files,audio_files_2)

rec2csv(audio_files,'audio_files.csv')

我的问题出现在这里。生成的 CSV 文件很好,除了它们有一些非常奇怪的值。例如,“音频”字段中的第一个值如下所示:

\xb8\xce\xe1H\xeb\x7f\x00\x00\xd0\x12\x81

这是什么原因造成的?它与我如何将数组相互附加有关吗?

4

2 回答 2

0

您的源文件是否包含 Unicode 字符?不幸的是,标准库中的原生 CSV 模块只能处理 ASCII 字符。当将扩展字符集编码为较低字符集时,您将获得这些字符。有几个“unicodecsv”包可能会有所帮助,或者使它们的转换器适应您的代码(这取决于您需要处理哪些 Unicode 字符)。

Joel Sposky的这篇经典文章供参考

于 2014-02-17T18:04:43.170 回答
0

这些是unicode字符。或者至少,它们看起来像unicode

将它们转换为 ASCII 的一些好建议

我玩过

some_string = "\xb8\xce\xe1H\xeb\x7f\x00\x00\xd0\x12\x81"

for i in some_string:
    try:
        print i.decode("windows-1252")
    except:
        print i

并获得了一些可识别的字符。

于 2014-02-17T18:06:41.790 回答