分割和计数Python字符串

gom*_*ing -2 python arcpy

所以我有一个字符串:

stringvar = "one;two;three;four"
Run Code Online (Sandbox Code Playgroud)

我想把它变成:

stringcount = 4
string1 = "one"
string2 = "two"
string3 = "three"
string4 = "four"
Run Code Online (Sandbox Code Playgroud)

有时会有更多的情况,有时会有更少的情况,当然值可以是任意的。我想在';'处分割字符串 分成单独的变量,然后再提供另一个给出变量数量的变量。

谢谢

Ada*_*ith 5

绝对不要这样做。

好的,既然我们已经解决了这个问题,那么这就是您的操作方法。

stringvar = "one;two;three;four"

lst = stringvar.split(";")
stringcount = len(lst)

for idx, value in enumerate(lst):
    globals()["string"+str(idx+1)] = value
    # This is the ugliest code I've ever had to write
    # please never do this. Please never ever do this.
Run Code Online (Sandbox Code Playgroud)

globals() 返回一个字典,该字典包含全局范围内的每个变量,该变量名作为键的字符串以及值以及值的字符串。

例如:

>>> foo = "bar"
>>> baz = "eggs"
>>> spam = "have fun stormin' the castle"
>>> globals()
{'baz': 'eggs', '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__builtins__': <module 'builtins' (built-in)>, 'foo': 'bar', '__doc__': None, '__package__': None, 'spam': "have fun stormin' the castle", '__name__': '__main__'}
Run Code Online (Sandbox Code Playgroud)

您可以引用该词典通过字符串名称添加新变量(globals()['a'] = 'b'将变量设置a为"b"),但这通常是一件很糟糕的事情。想想如何使用这些数据!您必须将新的变量名绑定到另一个变量,然后globals()[NEW_VARIABLE]每次都在内部使用它!让我们使用a list代替吧?

  • 感谢您的帮助和教训。看来我会经常光顾这个地方,一路上我想我的问题会被人嘲笑哈哈 (2认同)