如果问题写得不好,请提前道歉。这是我在网站上的第二篇文章,我是一名新手程序员。首先,这就是我的目标:
步骤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文件很好,除了它们有一些非常奇怪的值。例如,'audio'字段中的第一个值如下所示:
\ XB8 \ XCE \ xe1H \ XEB \ 0x7F部分\ X00 \ X00 \ XD0 \ X12 \ X81
是什么原因引起的?这与我如何将数组相互附加有关吗?
答案 0 :(得分:0)
您的源文件是否包含Unicode字符?遗憾的是,标准库中的本机CSV模块仅处理ASCII字符。当某些内容被编码为扩展字符集到较低字符集时,您将获得这些字符。有一些“unicodecsv”软件包可能会对你的代码有所帮助或修改它们(它取决于你需要处理的Unicode字符)。
作为参考,Joel Sposky有this classic article
答案 1 :(得分: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
并获得了一些可识别的角色。