Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以使用子字符串而不必将其存储在单独的变量中_Python_String - Fatal编程技术网

Python 是否可以使用子字符串而不必将其存储在单独的变量中

Python 是否可以使用子字符串而不必将其存储在单独的变量中,python,string,Python,String,我希望能够检查字符串中的第一个子字符串:random\u string=“fox is bright orange”是什么,而无需拆分字符串,然后从列表中读取,或者将其存储到其他变量中。有可能这样做吗 我在这里使用的字符串只是一个示例,因此没有使用指定的字符串。我希望能够计算出任何字符串的子字符串(如果它被')而不必使用列表您可以使用切片: In [1]: s = "fox is bright orange" In [2]: s[4:7] Out[2]: 'is ' In [3]: s[4:

我希望能够检查字符串中的第一个子字符串:
random\u string=“fox is bright orange”
是什么,而无需拆分字符串,然后从列表中读取,或者将其存储到其他变量中。有可能这样做吗

我在这里使用的字符串只是一个示例,因此没有使用指定的字符串。我希望能够计算出任何字符串的子字符串(如果它被
'
)而不必使用列表您可以使用切片:

In [1]: s = "fox is bright orange"

In [2]: s[4:7]
Out[2]: 'is '

In [3]: s[4:13]
Out[3]: 'is bright'

In [4]: s[4:]
Out[4]: 'is bright orange'

In [6]: s[:6]
Out[6]: 'fox is'

在较低级别的语言(如C)中,可以在原始字符串上使用带有仲裁的指针。所以你可以用切片来复制这种行为。但是请注意,python无论如何都会返回一个副本,因为python字符串是不可变的。

所以您希望从
获取
fox
,fox是亮橙色的

  • 正则表达式<代码>^\w+从开始处获取一个或多个字母数字:

    In [61]: re.search(r'^\w+', random_string).group()
    Out[61]: 'fox'
    
  • str.partition
    (生成元组)并获取第一个元素

    In [62]: random_string.partition(' ')[0]
    Out[62]: 'fox'
    

  • 在Python中执行所需操作的正确方法正是您试图避免的方法。没有真正的理由这样做

    但是。。。如果你绝对不想使用列表,你可以这样做

    sub_string = random_string[:random_string.index(' ')]
    

    请注意,如果字符串中没有空格,这将引发异常。

    是否要检查给定字符串是否以某个单词开头

    random_string = "fox is bright orange"
    print(random_string.startswith("fox ")   # True
    
    是否要获取第一个单词的长度

    random_string = "fox is bright orange"
    print(random_string.index(" "))           # 3
    
    你想得到第一个单词,但不分割其他单词吗

    random_string = "fox is bright orange"
    print(random_string[:random_string.index(" ")])    # fox
    
    请注意,
    str.index()
    在找不到指定的子字符串时,即当字符串中只有一个单词时,会引发
    ValueError
    ,因此如果使用最后两种解决方案之一,则应捕获该错误并执行适当的操作(例如使用整个字符串)


    或者您可以使用
    str.find()
    。如果找不到子字符串,则返回-1,您必须以稍微不同的方式进行处理。

    如果您不想使用re,对
    随机字符串进行简单迭代如何

    def get_first_word(long_string):
        offset = 0
        while long_string[offset] !=" ":
            offset+=1
    
        return long_string[0:offset]
    
    因此,运行此代码:

    random_string = "fox is bright orange"
    print(get_first_word(random_string))
    
    将打印-
    fox

    ''.join(iter(iter(s).__next__, ' '))
    

    无论字符串中是否实际存在
    ”,都将起作用。

    你说的“第一个子字符串”是什么意思?为什么,为什么不想使用列表?为什么要尽量减少使用的变量数?你能举一个你认为变量太多的代码的例子吗?这个问题是一个我从未见过的问题@DanielPryden Op对处理整个字符串的担忧是正确的,如果他需要百万字母字符串中的前三个字母(如果这是唯一的担忧)。当然,我无法解释问题的其余部分,我不知道。有没有办法做到这一点,这样我就不必知道字符串的大小来确定我需要什么了。因为字符串将不同,并且不会使用相同的字符位置。请提供一个示例输入和所需的输出?因为有很多方法可以做到这一点,而你的问题还不够清楚。请编辑。你能解释一下正则表达式是如何工作的吗?我有点confused@exemplarary添加了解释。请注意,如果有人希望在不进行错误处理的情况下执行此操作(无论出于何种原因),这应该可以使用
    random\u string[:(random\u string+))。index(“”)
    (在搜索的末尾添加空格)。我试图避免创建新字符串,因为这似乎很重要,但您是对的,我经常使用这种方法。你当然是对的,因为创建新字符串很昂贵。这种方法适用于更喜欢“我喜欢小巧、聪明的Python一行程序”的人。这在某些情况下仍然是合法的:)我想,如果字符串恰好是《大英百科全书》,就可以避免使用该列表。我认为在内存中加载4gb字符串,然后用它列出一个列表没有任何问题。
    ''.join(iter(iter(s).__next__, ' '))