Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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 - Fatal编程技术网

Python 读取某个字符时拆分字符串

Python 读取某个字符时拆分字符串,python,Python,我在一个文件中存储了几个字符串,每行一个,如下所示: dsfsdfsd/mhgjghj cvcv/xcvxc werwr/erewrwer nbmbn/iuouiouio ... first_list = [dsfsdfsd, cvcv, werwr, nbmbn, ...] secnd_list = [mhgjghj, xcvxc, erewrwer, iuouiouio, ...] first_list, secnd_list = [], [] for line in file:

我在一个文件中存储了几个字符串,每行一个,如下所示:

dsfsdfsd/mhgjghj
cvcv/xcvxc
werwr/erewrwer
nbmbn/iuouiouio
...
first_list = [dsfsdfsd, cvcv, werwr, nbmbn, ...]
secnd_list = [mhgjghj, xcvxc, erewrwer, iuouiouio, ...]
first_list, secnd_list = [], []
for line in file:
    for indx, char in enumerate(line):
        if char == '/':
            first_list.append(line[:(indx-1)])
            secnd_list.append(line[(indx-1):])
            break
正如您所看到的,始终存在的唯一字符是齿隙
/
,其余字符在其组成中非常随机。我需要分别存储每条线的第一部分和第二部分(即:齿隙之前和之后),以便最终得到如下结果:

dsfsdfsd/mhgjghj
cvcv/xcvxc
werwr/erewrwer
nbmbn/iuouiouio
...
first_list = [dsfsdfsd, cvcv, werwr, nbmbn, ...]
secnd_list = [mhgjghj, xcvxc, erewrwer, iuouiouio, ...]
first_list, secnd_list = [], []
for line in file:
    for indx, char in enumerate(line):
        if char == '/':
            first_list.append(line[:(indx-1)])
            secnd_list.append(line[(indx-1):])
            break
我可以在python中迭代每一行,检查是否存在反冲,并分别存储每一行的内容。它看起来是这样的:

dsfsdfsd/mhgjghj
cvcv/xcvxc
werwr/erewrwer
nbmbn/iuouiouio
...
first_list = [dsfsdfsd, cvcv, werwr, nbmbn, ...]
secnd_list = [mhgjghj, xcvxc, erewrwer, iuouiouio, ...]
first_list, secnd_list = [], []
for line in file:
    for indx, char in enumerate(line):
        if char == '/':
            first_list.append(line[:(indx-1)])
            secnd_list.append(line[(indx-1):])
            break
我正在寻找一个更漂亮(更具Python风格)的代码版本。

split()

first_list, secnd_list = [], []
for line in file:
    first, second = line.split('/')
    first_list.append(first)
    secnd_list.append(second)
这里的一个假设是,只有一个
/
存在。知道了这一点,
split('/')
将始终返回一个2元组的元素。如果此假设为假,请尝试使用拆分(“/”,1)
-它将拆分的数量限制为1,从左到右计数。

split()
在这里可能很有用:

first_list, secnd_list = [], []
for line in file:
    first, second = line.split('/')
    first_list.append(first)
    secnd_list.append(second)

这里的一个假设是,只有一个
/
存在。知道了这一点,
split('/')
将始终返回一个2元组的元素。如果此假设为假,请尝试拆分(“/”,1)-它将拆分数量限制为1,从左到右计数。

以及
str.split
您可以使用
str.partition

first_parts = []
second_parts = []
for line in file:
    before, _, after = line.partition('/')
    first_parts.append(before)
    second_parts.append(after)
另一种功能更强大的oneliner:

first_parts, _, second_parts = zip(*(line.partition('/') for line in file))
两个选项中的
解释-
str.partition
返回一个元组:
(第一部分、分隔符、最后一部分)
。在这里,我们不需要分隔符(事实上,我无法想象您为什么会需要分隔符),因此我们将其分配给一次性变量
\uu


是用于
str.partition
的文档,是用于
str.split
的文档,以及
str.split
您可以使用
str.partition

first_parts = []
second_parts = []
for line in file:
    before, _, after = line.partition('/')
    first_parts.append(before)
    second_parts.append(after)
另一种功能更强大的oneliner:

first_parts, _, second_parts = zip(*(line.partition('/') for line in file))
两个选项中的
解释-
str.partition
返回一个元组:
(第一部分、分隔符、最后一部分)
。在这里,我们不需要分隔符(事实上,我无法想象您为什么会需要分隔符),因此我们将其分配给一次性变量
\uu


是用于
str.partition
的文档,还是用于
str.split
的文档?你试过这个吗?@AleksanderLidtke没有,据我记忆所及,以前从未用过这个。反斜杠是
`。
/`是斜杠。保持这些笔直是非常重要的,否则你以后会有严重的问题。区分正斜杠和反斜杠的最佳方法是:将手指举到脸前
o
o
是你的头,
是你的手指)。如果你向前弯曲手指,你会得到一个正斜杠-
o/
。如果你向后弯曲手指,你会得到一个反斜杠-
o\
someString
。拆分('/')`?你试过这个吗?@AleksanderLidtke没有,据我记忆所及,以前从未用过这个。反斜杠是
`。
/`是斜杠。保持这些笔直是非常重要的,否则你以后会有严重的问题。区分正斜杠和反斜杠的最佳方法是:将手指举到脸前
o
o
是你的头,
是你的手指)。如果你向前弯曲手指,你会得到一个正斜杠-
o/
。如果你将手指向后弯曲,你会得到一个反斜杠-
o\
。一个旁注,
*(文件中的行的line.partition('/'))
将创建整个列表,然后将其传递给
zip
。这与时间性能无关,而与内存性能有关-尝试打开一个新的解释器会话并运行
func(*xrange(100000000))
func
是一个简单的
def func(*args):pass
。在我的机器上,我有一个
MemoryError
。一个旁注,
*(文件中的行的line.partition('/'))
将在传递给
zip
之前创建整个列表。这与时间性能无关,而与内存有关-尝试打开一个新的解释器会话并运行
func(*xrange(100000000))
func
是一个简单的
def func(*args):pass
。在我的机器上,我有
内存错误