ArcGIS:Python - 将逗号添加到字符串

时间:2018-06-12 06:45:34

标签: python arcgis

在ArcGIS中,我将大量的带状多边形与另一组相交,并记录了原始区域ID及其连接的数据。但是,创建的字符串是一长串的数字,范围从11到77(每个ID长度为11个字符)。我希望在每个制作之间添加“,”,以后更容易阅读和导出为.csv文件。为此,我写了这段代码:

def StringSplit(StrO,X):
  StrN = StrO #Recording original string 
  StrLen = len(StrN) 
  BStr = StrLen/X #How many segments are inside of one string
  StrC = BStr - 1 #How many times it should loop
  if StrC > 0:  
    while StrC > 1:
      StrN = StrN[ :((X * StrC) + 1)] + "," + StrN[(X * StrC): ]
      StrC = StrC - 1
    while StrC == 1:
      StrN = StrN[:X+1] + "," + StrN[(X*StrC):]
      StrC = 0 
    while StrC == 0:
      return StrN
  else:
    return StrN

主要问题是如何跨越具有不同长度(11-> 77)的多行(76)。我得到了最后的部分,只是没有内部循环,因为它返回错误或不正确的输出超过22个字符的字符串。

现在:

  

1. 01234567890返回01234567890

     

2. 0123456789001234567890返回01234567890,01234567890

     

3. 012345678900123456789001234567890返回:错误或,,或甚至,, 01234567890

我知道这可能是我想念的非常简单,但我似乎无法记住它是什么......

2 个答案:

答案 0 :(得分:1)

可以通过正则表达式轻松完成。 那些...........是11个点,用于每11个字符分配。

你可以使用pandas从数组输出

创建csv

<强>代码:

import re

x = re.findall('...........', '01234567890012345678900123456789001234567890')

print(x)
myString = ",".join(x)

print(myString)

<强>输出:

['01234567890', '01234567890', '01234567890', '01234567890']
01234567890,01234567890,01234567890,01234567890

为了简单起见,你可以这样做

<强>码

x = ",".join(re.findall('...........', '01234567890012345678900123456789001234567890'))


print(x)

答案 1 :(得分:1)

不要自己制作循环,使用python库或内置函数,它会更容易。例如:

def StringSplit(StrO,X):
    substring_starts = range(0, len(StrO), X)
    substrings = (StrO[start:start + X] for start in substring_starts)
    return ','.join(substrings)

string = '1234567890ABCDE'
print(StringSplit(string, 5))

# '12345,67890,ABCDE'