Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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_Python 3.x - Fatal编程技术网

从python中的文本拆分

从python中的文本拆分,python,python-3.x,Python,Python 3.x,我有一条短信 输入=ID名称出生 我想分别提取身份证、姓名和出生。所以我用 ID= input.split('-')[0] name= input.split('-')[1] birth = input.split('-')[2] 成功了。但有时,我的客户喜欢 输入=ID\u name\u出生 所以我需要把代码改成 ID= input.split('_')[0] name= input.split('_')[1] birth = input.split('_')[2] 我想让我的代码在任何情

我有一条短信

输入=ID名称出生

我想分别提取身份证、姓名和出生。所以我用

ID= input.split('-')[0]
name= input.split('-')[1]
birth = input.split('-')[2]
成功了。但有时,我的客户喜欢

输入=ID\u name\u出生

所以我需要把代码改成

ID= input.split('_')[0]
name= input.split('_')[1]
birth = input.split('_')[2]
我想让我的代码在任何情况下都能工作,只要插入''''nor'-'。我们有办法解决这个问题吗

使用,并且您也不需要调用它3次,请使用解包:

import re

for input_str in 'id-name-birth', 'id_name_birth':
    ID, name, birth = re.split('[-_]', input_str)
    print(ID, name, birth)
输出

id name birth
id name birth

我更喜欢使用或喜欢“-||”而不是方括号。谢谢。input=ID\u name\u birth.txt怎么样,我只想得到ID,name,birth。而且,有时输入的是ID\u name\u borior\u city。在您的代码中,我们需要输入四个输入来接收ID、name、birth、city=re.split'[-\]',input_str,但实际上,我只关心ID、name和birth。我们能在不知道应该输入多少的情况下得到它吗pass@Austin使用|和单个字符实际上是一种反模式,在这种情况下,字符类的速度更快-请看@John,您可以通过扩展解包丢弃其余的字符:ID、name、birth、*.=re.split'[-\]',input\str