将字符串重新排列为2D数组python

时间:2017-12-26 20:37:35

标签: python arrays

使用urllib之后我有以下字符串:

def add_subtract_series(a, b):
  return pd.Series((a + b, a - b))

df[['sum', 'difference']] = df.apply(
    lambda row: add_subtract_list(row['a'], row['b']), axis=1)

使用替换和拆分后:

459,2277,617459268\n14619,99,19600737\n11297,99,18666551\n16603,99,19761406\n12660,99,28741324\n4543

但是,我想获得以下2D数组:

data = data.replace('\\n', ',').split(',')

['459', '2277', '617459268', '14619', '99', '19600737', '11297', '99', '18666551', '16603', '99', '19761406', '12660', '99', '28741324', '4543']

有没有办法在不使用459 2277 617459268 14619 99 19600737 11297 99 18666551... 的情况下将这个1D数组分解为2D数组?

当我说2D数组时,我指的是当每行为1x3列表时的列列表。

很容易理解。

谢谢。

2 个答案:

答案 0 :(得分:1)

不要替换你的"行分隔符" by" column delimiters"。相反,用于拆分行分隔符上的字符串。然后拆分列分隔符上的每一行。

如果您的输入有新的换行符:

rows = data.split()

如果您的输入有一个字面反斜杠后跟字母n而不是换行符:

rows = data.split('\\n')

无论哪种方式,现在你可以用逗号分割每一行:

matrix = [row.split(',') for row in rows]

答案 1 :(得分:0)

将此str保存为类似于s的字符串:

s='''459,2277,617459268\n14619,99,19600737\n11297,99,18666551\n16603,99,19761406\n12660,99,28741324\n4543'''

for i in s.split('\n'):
    print (i)


459,2277,617459268
14619,99,19600737
11297,99,18666551
16603,99,19761406
12660,99,28741324
4543

或者如果您想在没有,的情况下打印:

for i in s.replace(',' , ' ').split('\n'):
    print (i)


459 2277 617459268
14619 99 19600737
11297 99 18666551
16603 99 19761406
12660 99 28741324
4543