我有一个数据框,其中一列有字符串值,另一列有整数,但这些列有特殊字符,或者字符串数据有整数。因此,为了删除它,我使用了regex,我的regex可以正常工作,但是对于整数列,如果'abc123'是,那么它不会删除abc,如果'123abc'是,那么它不会删除它。我不知道是模式错误还是代码错误。下面是我的代码,
d = [['abc','123'],['gbc@*','23abc'],['abc123','abc200'],['124abc','1230&*'],['abcer£$%&*!','230!?*&']]
df1= pd.DataFrame(d, columns=['str','int'])
print(df1)
str int
0 abc 123
1 gbc@* 23abc
2 abc123 abc200
3 124abc 1230&*
4 abcer£$%&*! 230!?*&
num = r'\d+$'
alpha = r'[a-zA-Z]+$'
wrong = df1[~df1['int'].str.contains(num, na=True)]
correct_int = [re.sub(r'([^\d]+?)', '', item) for item in wrong['int']]
print(correct_int)
wrong_str = df1[~df1['str'].str.contains(alpha, na=True)]
correct_str = [re.sub(r'([^a-zA-Z ]+?)', '', item) for item in df1['str']]
print(correct_str)
输出:
correct_int: ['23', '1230', '230']
如您所见,它已在'23abc'、'1230中删除
correct_str: ['abc', 'gbc', 'abc', 'abc', 'abcer']
现在它已全部删除,但有时当值为
'124abc'
我的模式错了吗?我也尝试过给出不同的模式,但没有任何效果
我正在删除列str中的整数和特殊字符,并删除列int中的字符串值和特殊字符预期输出:一旦清洁并用旧的清洁值替换后,输出将是这样的。
str int
0 abc 123
1 gbc 23
2 abc 200
3 abc 1230
4 abcer 230
尝试以下方法:
'\D'
表示任何非数字值,在int列中用空字符串"
替换这些值[^a-zA-Z]
表示不在a-z和A-Z范围内的任何字符,用空字符串替换这些字符"
在str列将这些转换应用到两个列中。
import pandas as pd
import re
d = [['abc','123'],['gbc@*','23abc'],['abc123','abc200'],['124abc','1230&*'],['abcer£$%&*!','230!?*&']]
df1= pd.DataFrame(d, columns=['str','int'])
df1['int'] = df1['int'].apply(lambda r: re.sub('\D', '', r))
df1['str'] = df1['str'].apply(lambda r: re.sub('[^a-zA-Z]', '', r))
print(df1)
输出:
str int
0 abc 123
1 gbc 23
2 abc 200
3 abc 1230
4 abcer 230
你可以用
df1['str'] = df1['str'].str.replace(r"[\d\W+]", '') # replaces numbers (\d) and non-word characters (\W) with empty strings
df1['int'] = df1['int'].str.replace(r"\D+", '') # replaces any non-decimal digit character (like [^0-9])
返回:
str int
0 abc 123
1 gbc 23
2 abc 200
3 abc 1230
4 abcer 230
编辑:处理套接字输入的代码部分:
问题内容: 这个问题已经在这里有了答案 : 字符串替换方法不替换字符 (5个答案) 2年前关闭。 我正在尝试将所有特殊字符替换为“%”,例如: 我的正则表达式是: 在在线工具中*它可以正常运行,但在Java中 弦保持不变。 *我尝试过:http : //www.regexplanet.com/ http://regex101.com/和其他 问题答案: 字符串是不可变的。您忘了将新变量重新分配给:
密码不能匹配或包含姓氏。 密码必须至少包含1个特殊字符。 密码必须至少包含1个数字字符。 密码必须至少包含2个字母字符。 密码必须至少包含1个大写字母。 密码不能匹配或包含用户ID。 密码不能匹配或包含名字。 密码不能包含以下字符:! 密码不得超过25个字符。 密码长度必须至少为8个字符。 密码必须至少包含1个小写字母。 这些是
我有一系列HTTP请求采样器,其中我使用正则表达式提取器对uuu VIEWSTATE、uu VIEWSTATEGENERATOR和uu EVENTVALIDATION进行了处理,这些采样器工作正常,还可以获取响应数据。 但是在一个步骤中,我在执行后得到错误“generalError:Invalid viewstate”(仅此步骤),并且我的正则表达式变量显示在错误消息-viewstate:${ev
我试图捕捉两个最接近的短语之间的文本,包括这些短语,但消极的展望似乎在我的情况下不起作用。 因此,这是文本文件的一部分: 我需要捕捉每一对<代码> 我的正则表达式是:
我正在尝试查找并删除在Notepad++中有“no data”作为数据的表行。可能是一个更好的方法,但记事本++是必须在这里。值可以是任何字符串。所有的表(每个tr标签)都在一行(可能有些导出问题),我发现很难删除它们。为了更好地演示(也许,希望如此),我把它们分开了。 后接 所以除了th字符串之外,每个tr中的一切都是一样的。我试过这样的方法,但没有奏效: 审判 非常感谢您的帮助!:)